gpt4 book ai didi

python - Mysql/python fetchall() 无法处理结果,因为它太大了

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:09 27 4
gpt4 key购买 nike

我有一个包含 2,760,000 行的表。在 mysqlworkbench 中,从原始表中选择 * 需要 36 秒。

我想在 python 中使用这个现有表创建另一个表(使用 my_func() 转换值)。

但是,当我在命令行中运行它时,它似乎永远不会完成。

sql = "SELECT ID, Eye, Values FROM my_original_table"
curQuery.execute(sql)

for row in curQuery.fetchall():
dat = list(row)
id = dat.pop(0)
eye = dat.pop(0)
values = dat.pop(0)
v = my_func(values)
if v != None :
sql = "INSERT INTO new_table VALUES ( '%s', '%s', %d );" % (id, eye, v)
print(sql)
curExe.execute(sql)

db.commit()

但是,如果我将 LIMIT 0,10 添加到我的第一个选择 sql(如下所示),它运行良好。所以,这意味着我的程序是正确的。但这是否意味着没有“限制”,我的计算机无法处理数据太多?我该如何解决这个问题?

sql = "SELECT ID, Eye, Values FROM ETCEpisodeVisualAcuity LIMIT 0,10"

最佳答案

使用游标作为迭代器(不调用fetchall):

sql = "SELECT ID, Eye, Values FROM my_original_table"
curQuery.execute(sql)

for row in curQuery:
# ...

以上等效于使用 while 循环和 fetchone 处理查询:

curQuery.execute("SELECT ID, Eye, Values FROM my_original_table")
row = curQuery.fetchone()
while row is not None:
# do something with data...
row = curQuery.fetchone()

关于python - Mysql/python fetchall() 无法处理结果,因为它太大了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38396835/

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