red*_*ice 5 python postgresql psycopg2
我不确定每种方法中最有效的是哪种,或者在技术上它们是否相同?
那是
cursor.execute("DECLARE super_cursor BINARY CURSOR FOR SELECT names FROM myTable")
while True:
cursor.execute("FETCH 1000 FROM super_cursor")
rows = cursor.fetchall()
Run Code Online (Sandbox Code Playgroud)
如alecxe python postgres给出的答案所示, 我可以fetchall()一百万行吗?
相较于:
while True:
results = cursor.fetchmany(1000)
if not results:
break
for result in results:
yield result
Run Code Online (Sandbox Code Playgroud)
应该使用psycopg2或DECLARE BINARY中指定的fetchmany。
我假设fetchmany和DECLARE BINARY都在数据库服务器端设置了一个临时表...客户端是Apache服务器。
我正在使用的网站会根据用户输入来计算数据库中数据的输入量...因此需要加载大量数据以进行模式匹配。
谢谢。
我的数据库中有 1B 条记录,DECLARE BINARY CURSOR 解决方案可以立即迭代表,而 fetchmany 开始工作有很大的延迟,我认为这是因为预处理并将数据加载到内存中。所以就我而言,二进制游标更有效。
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |