简体   繁体   中英

How do I pass multiple parameters via pd.read_sql, one singular and another in list format?

I have raw data as:

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

I need to pass both the above as parameters in an ORACLE SQL query via a cx_Oracle connection as:

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

I am creating a dictionary as:

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

and trying to use it as:

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

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

without success.
The :pid works but the :idnum doesn't. Any suggestions would be much appreciated.

I have raw data as:

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

I need to pass both the above as parameters in an ORACLE SQL query via a cx_Oracle connection as:

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

I am creating a dictionary as:

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

and create a tuple for the where clause as:

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

and trying to use it as:

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

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

with success. The :pid works with a dict input and the :idnum works as a tuple input.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM