使用trinopython客户端运行多个命令-trinodbapi



如何在trino python客户端中运行多个状态?https://github.com/trinodb/trino-python-client下面是示例代码。

queries = filter(None, query.split(";"))
for singelQuery in queries:
cursor.execute(singelQuery)
rows = cursor.fetchall()

查询

use test; select * from tbl

低于错误

TrinoUserError(type=USER_ERROR, name=MISSING_SCHEMA_NAME, message="line 1:16: Schema must be specified when session schema is not set", query_id=20220908_082529_00009_uw5yi)

对于特定的错误消息,您必须提到您的目录名称和模式名称:

use catalog.test;

如果未指定目录,则会相对于当前目录解析架构。

或者,您可以像这样运行查询,而不是使用use:

select * from catalog_name.test.tbl;

对于每个查询运行多个语句,您可能需要使用trino-cli,不确定iff-python客户端是否支持,

>> trino client --file $filename

以下是我建议您解决此问题的方法。只需一个接一个地运行您想要的命令(请注意,python客户端会因为每个SQL语句末尾的分号而抓狂,这就是为什么我的客户端没有分号的原因(。

代码。。。

cur.execute('USE tpcds.tiny')
cur.execute('SHOW TABLES')
rows = cur.fetchall()
for row in rows:
print(row)
print('-------------------')

cur.execute('DESC promotion')
rows = cur.fetchall()
for row in rows:
print(row)
print('-------------------')

cur.execute('SELECT p_promo_id, p_channel_details FROM promotion')
rows = cur.fetchall()
for row in rows:
print(row)

输出。。。

['call_center']
['catalog_page']
... rm'd some rows ...
['item']
['promotion']
['reason']
... rm'd some rows ...
['web_sales']
['web_site']
-------------------
['p_promo_sk', 'bigint', '', '']
['p_promo_id', 'char(16)', '', '']
['p_start_date_sk', 'bigint', '', '']
... rm'd some rows ...
['p_channel_demo', 'char(1)', '', '']
['p_channel_details', 'varchar(100)', '', '']
['p_purpose', 'char(15)', '', '']
['p_discount_active', 'char(1)', '', '']
-------------------
['AAAAAAAABAAAAAAA', 'Men will not say merely. Old, available ']
['AAAAAAAACAAAAAAA', 'So willing buildings coul']
['AAAAAAAADAAAAAAA', 'Companies shall not pr']

最新更新