首页 > 解决方案 > 多线程将 csvreader 行插入由 psycopg2 连接的 postgres

问题描述

我有一个管道,可以将压缩后的 csv 数据读取到 python 中,并将数据逐行插入到 postgres 数据库中,使用 psycopg2 连接。我已经创建了一个线程连接池,但我不确定如何利用它在单独的线程中插入每一行,而不是按顺序插入。如果这可能的话,互联网给了我混合的信息,我对线程 python 模块有一些经验,但不是很多。

管道目前是成功的,但速度很慢,我希望通过跨线程而不是顺序插入行来加快它的速度。

为了清楚起见,简化了以下代码:

main script

for row in reader:
    insertrows(configs, row) 
insertrows script

threadpool = pool.ThreadedConnectionPool(5, 20, database=dbname, port=port, user=user, password=password, host=host)
con = threadpool.getconn()
con.autocommit = True
cur = con.cursor()
cur.execute("INSERT INTO table VALUES row")
cur.close()
threadpool.putconn(con) 

我想做的不是循环遍历行,而是创建类似于此链接中的线程示例的东西,但没有强大的多线程参考框架,我很难弄清楚如何为我的目的编写类似的东西。

标签: pythonpostgresqlpsycopg2python-multithreading

解决方案


推荐阅读