用随机生成的东西填充数据库的最快方法



我今天第一次学习python是在玩SQL的时候。毫无疑问,我采用了这种非常创新的方式,用一百万个随机生成的条目填充数据库。

import sqlite3
db = sqlite3.connect("test.db")
db.isolation_level = None
import random
import string
def get_random_string(length):
letters = string.ascii_lowercase
result_str = ''.join(random.choice(letters) for i in range(length))
return result_str
i = 0
while i < 1000000:
db.execute("INSERT INTO RandomBase (name, number) VALUES (?, ?)", [get_random_string(8), random.randint(1900,2000)])
i += 1

但说实话,速度不是很快。我可以采用哪些基本方法来加快速度?为什么这种方法如此缓慢?我在考虑事务的问题,但问题是任何begin/commit命令似乎都不起作用,我也不能关闭自动提交。感谢阅读!

您可以考虑使用executemany()来大容量插入一些较大数量的记录。这将避免为插入的每个记录往返于SQLite数据库。考虑:

def get_random_string(length):
letters = string.ascii_lowercase
result_str = ''.join(random.choice(letters) for i in range(length))
return result_str
i = 0
vals = []
sql = "INSERT INTO RandomBase (name, number) VALUES (?, ?)"
while i < 1000000:
vals.append((get_random_string(8), random.randint(1900,2000)))
i += 1
if i % 100 == 0:
db.executemany(sql, vals)
vals.clear()

最新更新