相反,如果我将完全相同的表转储到csv文件中并使用此代码处理它
f = open('list.csv','rb')
lines = f.read().splitlines()
f.close()
print len(lines)
只需0.08 - 0.3秒
我使用fetchall()或fetchone()
尝试了MySQLdb和mysql.connectorimport time
start = time.time()
import MySQLdb as mdb
con = mdb.connect('127.0.0.1', 'login', 'p', 'db');
with con:
cur = con.cursor()
cur.execute("SELECT * FROM table")
rows = cur.fetchall()
print len(rows)
print 'MySQLdb %s' % (time.time()-start)
CPU负载高达3.7 - 8秒
是否可以达到与csv文件相同的速度?
修改 我的MySQL服务器似乎还可以。 在mysql控制台中:
SELECT * from TABLE;
....
80789 rows in set (0.21 sec)
答案 0 :(得分:0)
当cur.execute(...)
完成时,整个查询结果将在客户端恢复为列表。检查MySQLdb / cursor.py中的self._rows属性。
也就是说,时间成本在读取文件内容和从MySQL数据库中获取查询结果方面有所不同。就像我们所有人一样,内置函数总是比3PP函数更快。所以我认为没有办法让cursor.execute()
与open()
速度相同。
至于为什么open()
更快,我建议您查看Python源代码。这是link。
希望它有所帮助。