更快的Python MySQL
我用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 的一个特点是它可以 懒惰地获取行数据。