使用Python向Oracle传递值列表

2024-10-01 19:15:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图定义一个值(id号)列表,并将它们传递给查询Oracle表的SQL。在

只要我只包含一个id,这个代码就可以工作

named_params = {'ids':'123456548'}
query = """
select PEBEMPL_ECLS_CODE 
from PEBEMPL
inner join SPRIDEN on spriden_pidm = pebempl_pidm 
where SPRIDEN_CHANGE_IND is null
and SPRIDEN_ID in :ids
"""
df = pd.read_sql(query, connection, params=named_params)

传递一个id列表的正确语法是什么?在

例如,此代码不起作用:

^{pr2}$

返回错误:

': ORA-01484: arrays can only be bound to PL/SQL statements

Tags: 代码idids列表sql定义paramsquery
2条回答

我相信你必须把参数作为字符串传递。可以用逗号连接所有要查询的ID,并将其作为字符串发送到SPRIDEN_ID

您需要为列表中的每个项创建一个单独的bind参数,然后将id列表传递到read_sql()

idlist = ['123456548','546465464']

in_vars = ','.join(':%d' % i for i in range(len(idlist)))

query = """
select PEBEMPL_ECLS_CODE 
from PEBEMPL
inner join SPRIDEN on spriden_pidm = pebempl_pidm 
where SPRIDEN_CHANGE_IND is null
and SPRIDEN_ID in (%s)
""" % in_vars
df = pd.read_sql(query, connection, params=idlist)

为了避免混淆,上面的例子使用Pandasread_sql()函数与Oracle对话。对于直接使用cursor对象的人来说,语法是:

^{pr2}$

相关问题 更多 >

    热门问题