繁体   English   中英

在Python ibm_db WHERE IN条件中将列表绑定为参数

[英]Bind list as a parameter in Python ibm_db WHERE IN condition

我可以使用Python列表绑定到ibm_db中的WHERE IN参数的任何方式吗?

基本上是这样的:

sql = "SELECT * FROM TABLE WHERE FILE_NAME IN (?)"
stmt = ibm_db.prepare(conn, sql)
imb_db.bind_param(stmt, 1, ['first.txt', 'second.txt'])

但这不起作用..谢谢您的帮助。

在不同的驱动程序in值的参数化是一个普遍的问题, python-ibmdb也不例外。 您无法直接参数化每个占位符的值列表。

您将必须动态定义所需数量的占位符,然后绑定它们。 遵循以下原则:

values = ['first.txt', 'second.txt']

placeholders = ",".join("?" for _ in values)
sql = """
SELECT * 
FROM TABLE 
WHERE FILE_NAME IN ({placeholders)""".format(placeholders=placeholders)

stmt = ibm_db.prepare(conn, sql)

for index, value in enumerate(values):
    imb_db.bind_param(stmt, index, value)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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