我有一个python脚本试图转储一个包含7,5万行的表,但在大约20秒后查询被终止。 我使用MysqlDB连接远程数据库。我读到MySQL -quick选项可能会有所帮助,因为它不会缓存每个查询结果。 如何在我的python脚本中使用此选项?
编辑: 我用过pdb。似乎执行查询,因为变量"行"中存在所有7.5毫升行。 这是我的剧本:
def dumpDatasetToCsv(self, name):
cur = self._con.cursor()
res = cur.execute(self._query)
rows = cur.fetchall()
column_names = [i[0] for i in cur.description]
dumpFilePath=cfg.EtlConfiguration.exportDirectory + self._dataSetName+ '-' + self.csvFileSuffix + '.csv'
fp = open(dumpFilePath ,'w')
myFile = csv.writer(fp, lineterminator = '\n')
list_to_export=[]
for row in rows: list_to_export.append(list(row))
for row in list_to_export: row.insert(1, self.csvFileSuffix)
myFile.writerows(list_to_export)
fp.close()
代码在行#34;行中的行崩溃:list_to_export.append(list(row))"
此外,当我在上面的行之前使用pdb和stoped执行脚本时,我只是粘贴代码的其余行一行一切正常。输出文件已创建。
答案 0 :(得分:0)
750万行可能会导致你的记忆被填满并导致进程被杀死。你想做这样的事情:
with open('outfile.csv', 'w') as f:
while True:
rows = cursor.fetchmany(1000)
if not rows:
break
f.write(...)