如何解决sqlalchemy 带有多个参数的多条语句要传递
当我没有将变量传递到我的 tape_query 字符串中时,我已经通过 sqlalchemy 创建了一个有效的连接,这是一个多语句查询。但是,当我尝试将 sp_input 通过 :sp 传递到下面的字符串中时,我收到了 KeyError: 'data_date' 错误。我错过了什么?
什么有效:
"""
USE DATABASE this;
USE SCHEMA that;
SELECT * from table where id=100;
"""
conn = engine.connect()
for q in tape_query.split(";"):
conn.execute(q)
什么不起作用:
tape_query=
"""
USE DATABASE this;
USE SCHEMA that;
SELECT * from table where id=:sp;
"""
sp_input=200
conn = engine.connect()
for q in tape_query.split(";"):
conn.execute(q,{"sp":sp_input})
错误如下:
~\anaconda3\lib\site-packages\sNowflake\connector\cursor.py in execute(self,command,params,timeout,>_exec_async,_do_reset,_put_callback,_put_azure_callback,_put_callback_output_stream,_get_callback_output_stream,_get_callback_get_callback_get_stream_get_stream_get_stream_get_zh,_statement_params,_is_internal,>_no_results,_use_ijson,_is_put_get,_raise_put_get_error,_force_put_overwrite) 第 509 章 510 如果 len(processed_params) > 0: --> 511 查询 = 命令 %processing_params 512 其他: 513查询=命令
密钥错误:'数据日期'
解决方法
也许你可以尝试这样的事情?如果没有,那么也许可以深入研究文档。
https://docs.sqlalchemy.org/en/13/core/engines.html
https://docs.sqlalchemy.org/en/13/core/connections.html
from sqlalchemy import create_engine
engine = create_engine('postgresql://scott:tiger@localhost:5432/mydatabase')
sp_input = [100,200]
query_string = f"select * from table1 where id={sp_input[0]}; select * from table2 where id={sp_input[1]}"
connection = engine.raw_connection()
try:
cursor = connection.cursor()
cursor.execute(query_string)
results_one = cursor.fetchall()
cursor.nextset()
results_two = cursor.fetchall()
cursor.close()
finally:
connection.close()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。