首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Python中数据帧的列值传递给Oracle SQL脚本

问如何将Python中数据帧的列值传递给Oracle SQL脚本
EN

Stack Overflow用户
提问于 2019-05-06 09:12:37
回答 1查看 230关注 0票数 1

如何在SQL脚本的“where”子句中传递Python dataframe列值?

我正在尝试用Python运行Oracle SQL脚本。我有一个包含列Week的dataframe df1,运行。我想使用包含run_number = RUNi的“where”子句运行SQL脚本。我在Python语言中有一个带有多个cur.execute(sql_query)语句的'for‘循环。在其中一个'sql_query‘语句中,我有两个' where’子句,其中我必须过滤掉一个run_number。然而,我得到了‘绑定变量不支持在DDL语句中’的错误。这个问题的解决方案是什么?

代码语言:javascript
复制
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‘循环遍历所有运行值,运行一系列查询,生成特定的临时表集合并附加到Python中的最终dataframe对象。

EN

回答 1

Stack Overflow用户

发布于 2020-01-05 20:43:37

请尝试如下所示:

代码语言:javascript
复制
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
'''
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55997743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档