更快的Python MySQL

8 投票
1 回答
11367 浏览
提问于 2025-04-17 10:26

我用mysql.connector(可能是MySQLdb的Python实现)来访问MySQL数据库。从游标中获取查询结果的速度不是很快。

有没有办法让代码运行得更快呢?

也许可以换个库?用哪个比较好?(我用的是Windows和Python 3.1)

或者有没有其他方法可以获取数据,而不是一个一个地遍历游标?

1 个回答

14

默认情况下,MySQLdb 的游标会一次性从服务器获取所有查询结果。把这些数据转换成 Python 的元组列表可能会消耗很多内存和时间。

如果你想进行一个很大的查询,并且希望逐条从服务器获取结果,可以使用 MySQLdb.cursors.SSCursor。不过要注意,使用 SSCursor 的时候,在获取完整的结果集之前,不能在这个连接上进行其他查询

import MySQLdb
import MySQLdb.cursors as cursors
connection = MySQLdb.connect(
    ...
    cursorclass = cursors.SSCursor)
cursor = connection.cursor()
cursor.execute(query)
for row in cursor:
    ...

或者,你可以使用 oursql,这是一个替代的 MySQL Python 驱动。oursql 的一个特点是它可以 懒惰地获取行数据

撰写回答