多线程 Python 用于数据库插入

Multithreading Python For DB Insert

大家好,我目前正在尝试将当前数据库迁移到另一个数据库,不幸的是,该过程涉及 python。我能够在单线程中完成它,但是完成 1M 数据需要数小时的时间非常慢。在 python 中是否有类似的方法,如 Java executor 和 futures?

注意 user_list 是 1000/1M

的一部分
for data in user_list:
    q = """ insert into users(id,name,address,password) 
        Values({id},{name},{address},{password})
        """.format(id=data['id'],name=data['name'],address=data['address'],password=data['password'])
    db.command(q)

我认为如果我 运行 例如 8 个并发线程一次插入 8 个而不是单个线程执行单个插入

会快很多

既然你评论里说你用的是orientdb,你看看 在SQL Batch能力。

使用SQL BATCH 不会并行插入行,但会避免每个命令的往返。

您还可以使用来自 Python 的 SQL BATCH 使用 pyorient 库:

https://github.com/mogui/pyorient#execute-orientdb-sql-batch

要并行插入数据,您需要创建多个连接, 每个线程一个。