cursor.commit() 在 Python 中无法将数据上传到 Trino

问题描述 投票:0回答:2

我可以将 Trino 中的数据提取到 Python 中并对其进行操作,但是当我尝试将操作后的数据上传到新表中时,没有提交任何内容。我可以在 DBeaver 中删除/创建同一个表,但是如果我尝试做一些像通过 python 删除表一样简单的事情 - 它不起作用。我没有收到错误,但没有提交任何内容。

有效的代码示例:

# Importing required packages
from trino.dbapi import connect
from trino.auth import BasicAuthentication

# Establishing a connection to Trino
trino_conn=connect(
host='hostname.example.com',
port=8443,
user='user',
catalog='system',
schema='runtime',
http_scheme='https',
auth=BasicAuthentication("username", "password"),
)
trino_conn._http_session.verify = False
cursor = trino_conn.cursor()

query = """
SELECT  * FROM db.schema.sample_table
"""

cursor.execute(query)
rows = cursor.fetchall()
columns = [rows[0] for rows in cursor.description]
dataframe = pd.DataFrame(rows, columns=columns)

创建表成功后 DBeaver 中的sample_table_II,以下代码在 Python 中不会删除它:

# Importing required packages
from trino.dbapi import connect
from trino.auth import BasicAuthentication

# Establishing a connection to Trino
trino_conn=connect(
host='hostname.example.com',
port=8443,
user='user',
catalog='system',
schema='runtime',
http_scheme='https',
auth=BasicAuthentication("username", "password"),
)
trino_conn._http_session.verify = False
cursor = trino_conn.cursor()

cursor.execute("DROP TABLE db.schema.sample_table_II")
trino_conn.commit()

请记住,当我使用 Teradata 时,cursor.commit() 对我来说效果很好:

import teradatasql
teradata_conn = teradatasql.connect(host='hostname.example.com', user='XXXXXXXXXX', password='XXXXXXXXXX')
cursor = teradata_conn.cursor()
python cursor commit execute trino
2个回答
0
投票

我猜我工作的环境与 trino 包有太多依赖关系,因为当我通过以下方式创建新环境时:

conda create -n trino_env python=3.7 anaconda
conda activate trino_env

然后使用:

pip install trino

Python 能够提交我尝试对数据库所做的更改。


0
投票

遇到同样的问题,但无法更新 python 后,我在 Trino Github 中偶然发现了这一点:

https://github.com/trinodb/trino-python-client/issues/232

我的解决方案是在 cur.execute(statement) 之后添加 cur.fetchone()

© www.soinside.com 2019 - 2024. All rights reserved.