gpt4 book ai didi

python - 在 psycopg2 中为 PostgreSQL 查询使用多个游标有什么好处?

转载 作者:行者123 更新时间:2023-12-04 02:35:02 26 4
gpt4 key购买 nike

在 psycopg2 中使用单个游标对使用多个游标执行所有查询有什么区别。

即,说我这样做:

import psycopg2 as pg2
con = psycopg2.connect(...)
cur = con.cursor()
cur.execute(...)
....
....
cur.execute(...)
...

之后每次我希望执行查询时,我都会使用相同的光标 cur .

或者,每次我想查询我的数据库时,我都可以这样做:
with cur as con.cursor():
cur.execute(...)

在这种情况下,我的光标 cur每次使用后都会被删除。

哪种方法更好?一个人比另一个人有优势吗?一个比另一个快吗?更一般地说,为什么一个连接需要多个游标?

最佳答案

这两个选项具有可比性;您总是可以对两者进行基准测试以查看是否存在有意义的差异,但是 psycopg2 游标非常轻量级(它们不代表实际的服务器端,DECLARE d 游标,unless you pass a name argument),我不希望有任何实质性的放缓从任一路线。

psycopg2 有游标的原因是双重的。第一个是能够在结果集大于内存的情况下表示服务器端游标,并且不能一次从数据库中全部检索到;在这种情况下,游标用作与服务器端游标交互的客户端接口(interface)。

第二个是 psycopg2 游标不是线程安全的;任何线程都可以自由使用连接对象,但每个游标最多只能由一个线程使用。每个线程都有一个游标允许多线程应用程序从任何线程访问数据库,同时共享相同的连接。

请参阅 server side cursors 上的 psycopg2 使用文档和 thread and process safety更多细节。

关于python - 在 psycopg2 中为 PostgreSQL 查询使用多个游标有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62372081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com