首页 > 解决方案 > 如何通过 pd.read_sql 传递多个参数,一个单数,另一个以列表格式传递?

问题描述

我有原始数据:

id = 2345  
id_num = 3,6,343,32  

我需要通过 cx_Oracle 连接将上述两个参数作为 ORACLE SQL 查询中的参数传递为:

query = “””  
        select * from mytable where pid = 2345 and id_num in (3,6,343,32)  
        “””  

我正在创建一个字典:

sparm = {}  
sparm['pid'] = id  
sparm['idnum'] = id_num  

并尝试将其用作:

query = “””  
        select * from mytable where pid = :pid and id_num in :idnum  
        “””  

df = pd.read_sql(query, con=conct, params=sparm)  

没有成功。
:pid 有效,但 :idnum 无效。任何建议将不胜感激。

标签: pythonpandascx-oracle

解决方案


我有原始数据:

id = 2345  
id_num = 3,6,343,32  

我需要通过 cx_Oracle 连接将上述两个参数作为 ORACLE SQL 查询中的参数传递为:

query = “””  
        select * from mytable where pid = 2345 and id_num in (3,6,343,32)  
        “””  

我正在创建一个字典:

sparm = {}  
sparm['pid'] = id 

并为 where 子句创建一个元组:

where=tuple(list(id_num.split(","))) 

并尝试将其用作:

query = “””  
        select * from mytable where pid = :pid and id_num in {}  
        “””.format(where)

df = pd.read_sql(query, con=conct, params=sparm)  

成功。:pid 与 dict 输入一起使用, :idnum 用作元组输入。


推荐阅读