我应该使用循环来用关系数据库表中的数据填充Python列表吗?

我应该使用循环来用关系数据库表中的数据填充Python列表吗?,python,sql,list,Python,Sql,List,我在互联网上看到了一些例子,展示了如何从Python连接到数据库, 然后使用循环从表中提取数据并将其插入列表或打印 是否必须使用循环?有没有更简单的方法,比如PythonList=SQLRecordSet; 或者是一种直接使用记录集的方法 我关心的是性能,而不是代码的长度。有两种方法可以解决您面临的性能问题: 1。一次性获取所有记录 对于大多数PEP249实现,您可以使用以下语句。这实际上是返回一个列表,其中所有结果行都直接位于客户端(Python列表) 另一方面,如果您使用的是MySQLdb或

我在互联网上看到了一些例子,展示了如何从Python连接到数据库, 然后使用循环从表中提取数据并将其插入列表或打印

是否必须使用循环?有没有更简单的方法,比如PythonList=SQLRecordSet; 或者是一种直接使用记录集的方法


我关心的是性能,而不是代码的长度。

有两种方法可以解决您面临的性能问题:

1。一次性获取所有记录

对于大多数PEP249实现,您可以使用以下语句。这实际上是返回一个列表,其中所有结果行都直接位于客户端(Python列表)

另一方面,如果您使用的是MySQLdb或PyMySQL,那么我建议您使用以下内容

list(cursor)
您也可以对MySQLdb或PyMySQL使用
rows=cursor.fetchall()
,但这与结果不一致,因为它可以返回列表或元组,其中as
List(cursor)
始终返回列表

2。一次处理一行以减少内存占用

此方法将结果集存储在服务器中,因此不需要Python来创建元组列表。当返回的数据很大时,请使用此方法

conn = MySQLdb.connect(..., cursorclass=cursors.SSCursor)
cursor = conn.cursor()
cursor.execute('SELECT * FROM TABLE')
for row in cursor:
    print(row)

你看过文件了吗?他们是否有一种从结果中提取列的快速方法?否则,循环是您唯一的选择。
conn = MySQLdb.connect(..., cursorclass=cursors.SSCursor)
cursor = conn.cursor()
cursor.execute('SELECT * FROM TABLE')
for row in cursor:
    print(row)