首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python+MySQLdb,与平面文件访问相比,简单选择速度太慢。

python+MySQLdb,与平面文件访问相比,简单选择速度太慢。
EN

Stack Overflow用户
提问于 2014-09-10 00:54:05
回答 1查看 1.5K关注 0票数 3
  • 我有一张有80000行的简单表。
  • 我试图尽可能快地选择和保存所有行到python列表中。
  • 大约需要4-10秒。

相反,如果我将完全相同的表转储到csv文件中,并使用以下代码处理它

代码语言:javascript
复制
f = open('list.csv','rb')
lines = f.read().splitlines()
f.close()
print len(lines)

它只需要0.08-0.3秒的

我尝试了使用MySQLdb ()或mysql.connector ()

代码语言:javascript
复制
import 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控制台中:

代码语言:javascript
复制
SELECT * from TABLE;
....
80789 rows in set (0.21 sec)
EN

回答 1

Stack Overflow用户

发布于 2014-09-10 07:51:55

当完成cur.execute(...)时,整个查询结果将在客户端恢复为一个列表。为此,请检查MySQLdb/cursor.py中的self._rows属性。

也就是说,从MySQL数据库读取文件内容和获取查询结果的时间成本不同。和我们大家一样,内置函数总是比3PP函数更快。因此,我不认为有办法使cursor.execute()的速度与open()相同。

至于为什么open()更快,我建议您研究一下Python源代码。这是链接

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25755737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档