gpt4 book ai didi

python - 使用 SQLAlchemy 更快地将记录插入表中

转载 作者:IT王子 更新时间:2023-10-29 06:27:49 25 4
gpt4 key购买 nike

我正在解析日志并使用 SQLAlchemy 和 Python 将其插入 MySQL 或 SQLite。现在我打开一个到数据库的连接,当我遍历每一行时,我在它被解析后插入它(这现在只是一个大表,对 SQL 不是很有经验)。然后我在循环完成后关闭连接。总结代码为:

log_table = schema.Table('log_table', metadata,
schema.Column('id', types.Integer, primary_key=True),
schema.Column('time', types.DateTime),
schema.Column('ip', types.String(length=15))
....
engine = create_engine(...)
metadata.bind = engine
connection = engine.connect()
....
for line in file_to_parse:
m = line_regex.match(line)
if m:
fields = m.groupdict()
pythonified = pythoninfy_log(fields) #Turn them into ints, datatimes, etc
if use_sql:
ins = log_table.insert(values=pythonified)
connection.execute(ins)
parsed += 1

我的两个问题是:

  • 有没有办法在这个基本框架内加快插入速度?也许有插入队列和一些插入线程、某种批量插入等?
  • 当我使用 MySQL 时,对于大约 120 万条记录,插入时间为 15 分钟。使用 SQLite,插入时间是一个多小时。数据库引擎之间的时间差似乎是正确的,还是意味着我做错了什么?

最佳答案

您应该尝试的重要事情是围绕多个插入放置一个事务,因为将数据库提交到磁盘确实需要很长时间。您需要决定批处理级别,但粗略的第一次尝试是围绕整个批处理进行交易。

关于python - 使用 SQLAlchemy 更快地将记录插入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2881890/

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