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

发布于 2024-11-07 09:01:22 字数 407 浏览 2 评论 0原文

给定 Python 中的一个大(约 10,000)整数列表,如何有效地从 id 位于列表中的表中SELECT所有项目?

我已经尝试过:

>>> 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)确实存在于表中。

Given a large (~10,000) list of integers in Python, How do I efficiently SELECT all items from a table whose id is in the list?

I've tried:

>>> 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)]

The second and third id (97600168, 97611194) do exist in the table.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

帅气称霸 2024-11-14 09:01:22

使用您的示例,使用 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])

Using your example, use where id in and then pass a parameter which is a tuple of the id values you want to select:

>>> 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])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文