gpt4 book ai didi

python - 如何提高sqlite3建表的性能

转载 作者:太空宇宙 更新时间:2023-11-03 17:53:22 25 4
gpt4 key购买 nike

我使用 python 和 sqlite3 来做一些事情,我需要在 sqlte3 中创建很多表。所有表都具有相同的架构,如下所示:

ID |    AA BB CC DD EE FF GG
1 a b c d e f g
. ....................
. ....................
. ....................
2000 ....................


for i in stl_lines[1:]:
line = i.split(' ')
sql = "CREATE TABLE '%06d'" \
"(A INTEGER UNIQUE NOT NULL," \
" B INTEGER NOT NULL," \
" C INTEGER NOT NULL," \
" D INTEGER NOT NULL," \
" E INTEGER NOT NULL," \
" F REAL NOT NULL," \
" G INTEGER NOT NULL," \
"PRIMARY KEY(DATE))" % (int(line[0]))
cursor.execute(sql)

当我运行这段代码时,我发现创建一张表几乎需要1~2秒,而我有2000多个表,创建数据库花费了我大约3000秒,这个成本是 Not Acceptable 。如何提高创建表的速度,或者您对设计数据库有什么建议吗?谢谢!

<小时/>

最后,在CL的帮助下,我解决了这个问题。。现在我可以在 2 秒内创建 2000 个表!非常感谢他/她。

这是我的新代码:

db = sqlite3.connect(DB_FILE)
db.isolation_level = None
cursor.execute('BEGIN ')
for i in stock_tables:
cursor.execute(i)
cursor.execute('COMMIT ')
db.isolation_level = ''

最佳答案

你的问题是Python;它尝试变得聪明并自动为每个 CREATE TABLE 语句提交一个事务 ( documentation )。

您想改用单个事务。设置isolation_levelNone,并在所有语句周围执行一次 BEGIN/COMMIT。

关于python - 如何提高sqlite3建表的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28822520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com