当我没有将变量传递到我的 tape_query 字符串时,我通过 sqlalchemy 创建了一个有效的连接,这是一个多语句查询。但是,当我尝试通过 :sp 将 sp_input 传递到下面的字符串中时,我得到一个 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 在执行(自我,命令,参数,超时,>_exec_async,_do_reset,_put_callback,_put_azure_callback,_put_callback_output_stream,_get_callback,>_get_azure_callback,_get_callback_output_stream,_show_progress_bar,_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 查询 = 命令 % 处理参数 512 否则: 513 查询 = 命令
KeyError:'data_date'