Python中的cursor.fetchall()vs list(cursor)

NZal:

两种方法都返回查询返回项的列表,我在这里错过了吗?
还是它们确实具有相同的用法?
在性能方面有任何差异吗?

忘记:

如果使用默认光标a MySQLdb.cursors.Cursor,则在完成时,整个结果集将存储在客户端(即,在Python列表中)cursor.execute()

因此,即使您使用

for row in cursor:

您将不会减少任何内存占用。整个结果集已经存储在列表中(请参见self._rowsMySQLdb / cursors.py)。

但是,如果您使用SSCursor或SSDictCursor:

import MySQLdb
import MySQLdb.cursors as cursors

conn = MySQLdb.connect(..., cursorclass=cursors.SSCursor)

然后将结果集存储在服务器 mysqld中。现在你可以写

cursor = conn.cursor()
cursor.execute('SELECT * FROM HUGETABLE')
for row in cursor:
    print(row)

并且将从服务器中逐行提取行,因此不需要Python首先构建庞大的元组列表,从而节省了内存。

否则,正如其他人已经指出的那样,cursor.fetchall()并且list(cursor)基本上是相同的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从 python 中的 cursor.fetchall() 写入 csv

cursor.fetchall() 抛出索引或范围错误

打印来自cursor.fetchall()的结果,不带尾部的“ L”

使用cursor.fetchall()返回空数据框

psql在cursor.fetchall()期间引发解析错误

cursor.fetchall() 使用 cx_Oracle 返回空元组

为什么 cursor.fetchone() 或 cursor.fetchall() 不返回/读取数据?

为什么在尝试选择从 cursor.fetchall() 创建的二维数组中的列时出现错误?

cursor.fetchall()有时会返回一个空列表

如何将元组cursor.fetchall列表转换为不同格式

使用cursor.fetchall()时无法从第二行获取数据

使用cursor.execute()在python中执行查询的问题

Cursor.execute在Python中不起作用

cursor.forEach()中的“继续”

Java中的N_RESIZE_CURSOR与S_RESIZE_CURSOR

python fetchall()中的MySQL死锁

Python脚本挂在cursor.execute()上

在Ruby中执行MongoDB的cursor.forEach()

CURSOR中的SQL WITH关键字

聚合管道中的 Mongo“$cursor 阶段出错...”

如何使用pyodbc和MS-Access在Python cursor.execute中查看真正的SQL查询

如何从python中的cursor.execute()读取所有数据?

在python 3.2.5 onm win 7的pyodbc中从cursor.execute运行SQL查询时出错

如何将py2neo.database.cursor类转换为python中的字典或列表?

索引Python fetchall()

PDO 中的 fetchall 错误

从python中的fetchall结果构造消息格式

嵌套列表中的curs.fetchall() python

如何在Python中模拟.fetchall()?