簡體   English   中英

用於數據庫插入的多線程Python

[英]Multithreading Python For DB Insert

嗨,大家好,我目前正在嘗試將當前數據庫遷移到另一個數據庫,不幸的是該過程涉及python。 我能夠單線程完成它,但是完成1M數據要花幾個小時才變得非常慢。 python中是否有類似Java執行器和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不會並行插入行,但是它將避免每個命令的往返。

您還可以使用pyorient庫從Python使用SQL BATCH:

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

要並行插入數據,您將需要創建多個連接,每個線程一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM