草庐IT

SScursor

全部标签

与从 CSV 文件导出和导入相比,Python MySQLdb SScursor 速度较慢。加速可能吗?

作为构建数据仓库的一部分,我必须查询大约7500万行的源数据库表。我想对7500万行做一些处理,然后将结果添加到另一个数据库中。现在,这是相当多的数据,我主要通过两种方法取得了成功:1)使用MySQL的“SELECT...INTO”功能将查询导出为CSV文件,并使用python的fileinput模块读取它,以及2)使用MySQLdb的SScursor连接到MySQL数据库(默认游标将查询放在内存中,杀死python脚本)并以大约10k行的block(这是我发现的block大小)获取结果是最快的)。第一种方法是“手动”执行SQL查询(大约需要6分钟),然后使用python脚本读取csv

python - 使用带有嵌套查询的 python MySQLDB SScursor

当生成大量结果集时,典型的MySQLdb库查询会使用大量内存并且在Python中执行不佳。例如:cursor.execute("SELECTid,nameFROM`table`")foriinxrange(cursor.rowcount):id,name=cursor.fetchone()printid,name有一个可选的游标,一次只能获取一行,这确实加快了脚本的速度并大大减少了脚本的内存占用。importMySQLdbimportMySQLdb.cursorsconn=MySQLdb.connect(user="user",passwd="password",db="dbname"

python - 如何高效使用 MySQLDB SScursor?

我必须处理一个大型结果集(可能有数十万行,有时甚至更多)。不幸的是,它们需要一次全部检索(在启动时)。我正在尝试通过使用尽可能少的内存来做到这一点。通过查看SO,我发现使用SSCursor可能是我正在寻找的,但我仍然不知道如何准确地使用它们。从基本游标或SScursor执行fetchall()是否相同(就内存使用而言)?我可以从sscursor中逐行(或逐行)“流式传输”吗?如果可以,最有效的方法是什么? 最佳答案 我同意OttoAllmendinger的回答,但要明确DenisOtkidach的评论,以下是如何在不使用Otto的f