我可以使用Python列表绑定到ibm_db中的WHERE IN参数的任何方式吗?
基本上是这样的:
fn foo(file: &OsStr) {
Command::new("bar")
.args(&["baz", "qux", file.to_str().unwrap()])
.spawn();
}
但是这不起作用。谢谢您的帮助。
答案 0 :(得分:1)
参数化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)