Adn*_*uei 4 python sql postgresql psycopg2 database-cursor
在 psycopg2 中使用单个游标来执行针对使用多个游标的所有查询有什么区别。
即,说我这样做:
import psycopg2 as pg2
con = psycopg2.connect(...)
cur = con.cursor()
cur.execute(...)
....
....
cur.execute(...)
...
Run Code Online (Sandbox Code Playgroud)
之后每次我希望执行查询时,我都使用相同的 cursor cur。
或者,每次我想查询我的数据库时,我都可以这样做:
with cur as con.cursor():
cur.execute(...)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,cur每次使用后我的光标都会被删除。
哪种方法更好?一个人比另一个人有优势吗?一个比另一个快吗?更一般地说,为什么甚至需要一个连接的多个游标?
这两个选项具有可比性;您始终可以对两者进行基准测试以查看是否存在有意义的差异,但是 psycopg2 游标非常轻巧(它们不代表实际的服务器端DECLAREd 游标,除非您传递name参数)并且我不希望从无论是路线。
psycopg2 有游标的原因是双重的。第一个是能够在结果集大于内存的情况下表示服务器端游标,并且不能一次从数据库中检索;在这种情况下,游标用作与服务器端游标交互的客户端接口。
第二个是 psycopg2 游标不是线程安全的;一个连接对象可以被任何线程自由使用,但每个游标最多只能被一个线程使用。每个线程都有一个游标允许多线程应用程序从任何线程访问数据库,同时共享相同的连接。
有关更多详细信息,请参阅有关服务器端游标以及线程和进程安全的 psycopg2 使用文档。
| 归档时间: |
|
| 查看次数: |
1812 次 |
| 最近记录: |