gpt4 book ai didi

python+MySQLdb, simple select 相比平面文件访问速度太慢

转载 作者:行者123 更新时间:2023-11-28 19:20:43 26 4
gpt4 key购买 nike

  • 我有一个包含 80 000 行的简单表格。
  • 我正在尝试尽快选择所有行并将其保存到 python 列表中。
  • 大约需要 4 - 10 秒。

相比之下,如果我将完全相同的表转储到 csv 文件中并使用此代码对其进行处理

f = open('list.csv','rb')
lines = f.read().splitlines()
f.close()
print len(lines)

仅需 0.08 - 0.3 秒


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

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 控制台中:

SELECT * from TABLE;
....
80789 rows in set (0.21 sec)

最佳答案

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

也就是说,读取文件内容和从MySQL数据库中获取查询结果的时间成本是不同的。众所周知,内置函数总是比 3PP 函数更快。所以我认为没有办法使 cursor.execute() 的速度与 open() 相同。

至于为什么 open() 更快,我建议您查看 Python 源代码。这是 link .

希望对您有所帮助。

关于python+MySQLdb, simple select 相比平面文件访问速度太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25755737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com