多线程 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
要并行插入数据,您需要创建多个连接,
每个线程一个。
大家好,我目前正在尝试将当前数据库迁移到另一个数据库,不幸的是,该过程涉及 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
要并行插入数据,您需要创建多个连接, 每个线程一个。