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