使用psycopg2的参数化查询:从Python列表中SELECT

2 投票
1 回答
4445 浏览
提问于 2025-04-16 17:44

假设你有一个很大的整数列表,大约有1万个数字,想要在Python中高效地从一个表格中选择出这些数字对应的所有项目,应该怎么做呢?

我尝试过:

>>> 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)确实在这个表格里存在。

1 个回答

8

根据你的例子,可以使用 where id in,然后传入一个包含你想要选择的 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])

撰写回答