当我从python获取数据时,需要向雪花查询添加查询标记(使用线程池,提供了代码)



我正在使用SQLAlchemy by create引擎将python连接到snowflake以获取数据。添加了一段关于我是如何做到这一点的代码片段。在你建议使用connector.snowflake之前,我已经尝试过了,它有查询标记,但我需要通过线程池方法提取查询,找不到添加查询标记的方法。

我也尝试过ALTER SESSION SET QUERY_TAG,但由于查询是并行运行的,所以它不提供查询标记。

代码:

vendor_class_query ='select * from table' 
query_list1 = [vendor_class_query]
pool = ThreadPool(8)
def query(x):
engine = create_engine(
'snowflake://{user}:{password}@{account}/{database_name}/{schema_name}?
warehouse={warehouse}&role={role}&paramstyle={paramstyle}'.format(
user=---------,
password=----------,
account=----------,
database_name=----------,
schema_name=----------,
warehouse=----------,
role=----------,
paramstyle='pyformat'

),
poolclass=NullPool
)
try:
connection = engine.connect()
for df in pd.read_sql_query(x, engine, chunksize=1000000000):
df.columns = map(str.upper, df.columns)
return df
finally:
connection.close()
engine.dispose()
return df
results1 = pool.map(query, query_list1)
vendor_class = results1[0]'''

您可以在create_engine期间向SQLAlchemy添加一个查询标记,如下所述https://github.com/snowflakedb/snowflake-sqlalchemy/issues/266

engine = create_engine(
url=URL(
account='my_snowflake_account',
user='user_1',
password="something1?",
database="app_1",
warehouse="app_1",
role="dev",
),
connect_args=dict(
session_parameters=dict(
timezone='America/Toronto',
query_tag='test',
)
)
)

最新更新