并行化pandas-pyodbc-SQL数据库调用

2024-09-14 18:11:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在通过pandas.io.sql.read_sql()命令将数据查询到dataframe中。我想把这些调用并行化,类似于这个家伙所提倡的:(Embarrassingly parallel database calls with Python (PyData Paris 2015 )

类似(非常普遍):

pools = [ThreadedConnectionPool(1,20,dsn=d) for d in dsns]
connections = [pool.getconn() for pool in pools]
parallel_connection = ParallelConnection(connections)
pandas_cursor = parallel_connection.cursor()
pandas_cursor.execute(my_query)

这样的事有可能吗?在


Tags: 数据inio命令dataframepandasforread
1条回答
网友
1楼 · 发布于 2024-09-14 18:11:51

是的,这应该行得通,不过需要注意的是,您需要改变parallel_连接.py在你的演讲中。在这段代码中有一个fetchall函数,它并行执行每个游标,然后组合结果。这是你要改变的核心:

旧代码:

def fetchall(self):
    results = [None] * len(self.cursors)
    def do_work(index, cursor):
        results[index] = cursor.fetchall()
    self._do_parallel(do_work)
    return list(chain(*[rs for rs in results]))

新代码:

^{pr2}$

回购:https://github.com/godatadriven/ParallelConnection

相关问题 更多 >