0
我有一个大表(table1
,列name
,key
,info
)与〜1,000,000行上,我需要执行以下操作:在sqlite3的表中的行有效地执行Python代码
- 选中所有行其中
info
是Null
或""
- 在Python 3,其将执行转换函数
name
到info
(姑且称之为conversion(name)
) - 更新的行与新
info
值
什么是执行此更新的最快方法?有没有可以激活以提高性能的SQLite3设置?
我目前的研究已表明与SQLite3的库中的以下内容:
cursor = db.cursor()
cursor.execute('SELECT longkey, name FROM table1 WHERE info IS NULL or info = "";')
rows = cursor.fetchall()
items = []
for row in rows:
# Convert name to info
info = conversion(row[1])
items.append(info,row[0])
cursor.executemany('UPDATE table1 SET info = ? WHERE longkey = ?;',items)
这个问题当然是列表rows
这是巨大的,非常内存密集型的创建。
我考虑过多个游标,但是这个seems to not be a good solution。
编辑:正在使用connection.create_function(name, num_params, func)
一个可能的解决方案呢?
我该如何优化这个过程,使其变得快速而不是过于内存密集?
感谢。这将是最有效的更新方法吗? – duhamp