python - 如何将 Python 中数据框的列值传递给 Oracle SQL 脚本
问题描述
如何在 SQL 脚本的“where”子句中传递 Python 数据框列值?
我正在尝试在 Python 中运行 Oracle SQL 脚本。我有一个带有 [Week, RUN] 列的数据框 df1。我想使用包含 run_number = RUN[i] 的“where”子句运行 SQL 脚本。我在 Python 中有一个带有多个 cur.execute(sql_query) 语句的“for”循环。在“sql_query”之一中,我有 2 个“where”子句,我必须在其中过滤掉一个 run_number。但是,我收到“DDL 语句不支持绑定变量”错误。解决方案是什么?
for i in range(len(df1['RUN'])):
cur.execute(sql_query_1, (int(df1['RUN'][i]), int(df1['RUN'][i])))
cur.execute(sql_query_2)
sql_query_1 ='''Create table ....
where E.CID=A.CID AND :1 BETWEEN E.RUN_START AND E.RUN_END AND RUN = :2
'''
我期望“for”循环运行所有 RUN 值,运行一堆查询,这些查询产生某些临时表集并附加到 Python 中的最终数据框对象。
解决方案
请尝试如下:
for i in range(len(df1['RUN'])):
cur.execute(sql_query_1, m=int(df1['RUN'][i]), n=int(df1['RUN'][i]))
cur.execute(sql_query_2)
sql_query_1 ='''Create table ....
where E.CID=A.CID AND E.RUN_START between :m and :n and E.RUN_END between :m and:n
'''
推荐阅读
- fastapi - 在 POST 上使用 pydantic 时无法处理的实体
- c++ - ipopt 传递额外的常量或函数
- python - 如何在新列中分隔列
- python - 尝试在 python 中使用 @jit 加速代码时导致 disabled_exception_breakpoint 错误
- telegram - 即使禁用了“sensitive_enabled”,Telethon 也无法转发消息
- python - 如何从熊猫数据框中返回相关值
- python - 命令“Python:选择解释器”导致错误(未找到命令“python.setInterpreter”)
- javascript - 使用表单发送 div 内容?
- php - 如何将计划分享给条带用户?
- powerbuilder-2019 - 使用 Bitbucket 存储库的 Git 源代码控制不适用于 PowerBuilder 2019 中的一位开发人员