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

2024-10-03 02:37:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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


Tags: 数据方法代码数据库列表性能例子记录集
1条回答
网友
1楼 · 发布于 2024-10-03 02:37:00

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

1。一次性获取所有记录

对于大多数PEP249实现,可以使用以下语句。这实际上是返回一个包含所有结果行的列表(Python列表)。在

rows = cursor.fetchall()

另一方面,如果您使用MySQLdb或PyMySQL,那么我建议您使用以下方法。在

^{pr2}$

您也可以将rows = cursor.fetchall()用于MySQLdb或PyMySQL,但它与结果不一致,因为它可以返回一个列表或一个元组,其中,list(cursor)总是返回一个列表。在

2。一次仅限一行以减少内存占用

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

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

相关问题 更多 >