用于数据库插入的多线程Python

时间:2016-07-28 15:56:00

标签: python multithreading orientdb

大家好,目前我正在尝试将当前的数据库迁移到另一个,并且该过程不幸涉及到python。我能够做到单线程,但是花费数小时才完成1M数据的速度非常慢。在Java执行器和期货这样的python中是否有类似的方法?

请注意,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个而不是单个线程执行单个插入,那将会快很多

1 个答案:

答案 0 :(得分:1)

由于您在评论中说您正在使用orientdb,请查看 在SQL Batch能力。

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

您还可以使用pyorient库从Python使用SQL BATCH:

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

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