我可以在< = 1秒内插入100k笔记(数据库SQLite)。我现在使用python库。我的代码在这里。我在1.5秒内得到100k笔记。
conn = sqlite3.connect('data8.sqlite')
c = conn.cursor()
for i in range(1,100000):
c.execute('''INSERT INTO data ('val1','val2','val3','val4','val5','val6','val7','val8','val9','val10')\
VALUES ('%d','%d','%d','%d','%d','%d','%d','%d','%d','%d')''' % (1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
conn.commit()
c.close()
conn.close()
答案 0 :(得分:1)
您可以将所有数据存储到列表中,并将此列表传递给executemany()
:
data = []
for i in range(1, 100000):
data.append((1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
c.executemany('INSERT INTO data (val1, val2, val3, val4, val5, val6, val7, val8, val9, val10) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', data)
我使用?
字符来防止使用字符串格式化(它应该被用作最佳实践)。
在我的电脑里,我从约1秒钟到了<1秒。 0.3秒。
答案 1 :(得分:0)
是的,你可以,但这取决于你的机器,例如我的机器不到1毫秒,不要使用' '
这样INSERT INTO data ('val1','val2' ...
使用这个INSERT INTO data (val1,val2 ...
:
conn = sqlite3.connect('data8.sqlite')
c = conn.cursor()
c.execute("""
CREATE TABLE IF NOT EXISTS data (
val1 integer,
val2 integer
)
""")
for i in range(1,100000):
c.execute('''INSERT INTO data (val1, val2)\
VALUES (%d, %d)''' % (1, 2))
row= c.execute("""select count(*) from data""")
print(row.fetchone())
conn.commit()
c.close()
conn.close()
答案 2 :(得分:0)
这不是代码问题,插入速度是由几个变量引起的:
要查看速度是否越来越高,您可以尝试在更多的permormant机器(如服务器)上插入值。