使用psycopg2参数化查询:从Python列表中选择

使用psycopg2参数化查询:从Python列表中选择,python,psycopg2,sql-parametrized-query,Python,Psycopg2,Sql Parametrized Query,在Python中,给定一个大的(~10000)整数列表,如何有效地选择列表中id为的表中的所有项 我试过: >>> lst2 [{'id': 97600167}, {'id': 97600168}, {'id': 97611194}] >>> cur.executemany("SELECT id, parent_id FROM my_table WHERE id=%(id)s", lst2) >>> cur.fetchall() [(9761

在Python中,给定一个大的(~10000)整数列表,如何有效地
选择列表中id为的表中的所有项

我试过:

>>> lst2
[{'id': 97600167}, {'id': 97600168}, {'id': 97611194}]
>>> cur.executemany("SELECT id, parent_id FROM my_table WHERE id=%(id)s", lst2)
>>> cur.fetchall()
[(97611194, 10020688), (None, None), (None, None)]

第二个和第三个id(97600168、97611194)确实存在于表中。

使用您的示例,使用
中的id,然后传递一个参数,该参数是您要选择的id值的元组:

>>> lst2
[{'id': 97600167}, {'id': 97600168}, {'id': 97611194}]
>>> ids = tuple(x['id'] for x in lst2)
>>> cur.execute("SELECT id, parent_id FROM my_table where id in %s",[ids])

谢谢,但它给了我一个
psycopg2。编程错误:无法适应
异常。您使用的是什么版本?在发布之前,我在psycopg2上测试了这个参数化。您确实传递了一个
int
s元组(单个项序列),不是吗,如我的示例所示?