【发布时间】:2018-07-19 15:27:12
【问题描述】:
有人可以为我指出如何解决以下问题的正确方向。我正在尝试使用 pandas.read_sql 和 asyncio 提出解决方案。我想将表记录从一个数据库迁移到另一个数据库。
我想做以下事情:
table 1
.
.
.
table n
我有这个功能:
def extract(table):
try:
df = pd.DataFrame()
df = pd.concat(
[chunk for chunk in
pd.read_sql(sql,
con=CONNECTION,
chunksize=10**5)]
)
except Exception as e:
raise e
else:
return df
我想并行运行这些,而不是一个一个地运行。
extract(table1)
extract(table2)
.
.
extract(tablen)
【问题讨论】:
-
asyncio 是硬性要求吗?您是否考虑过线程或多处理?
-
是的,但也许我可以使用线程或多处理来获得一些想法。但我听说使用这些方法会出现很多问题。
-
即使 asyncio 是一项硬性要求,基于 asyncio 的解决方案仍会在后台使用线程来并行运行
DataFrame.read_sql。考虑到这一点,最好使用concurrent.futures,它为并行化代码提供了出色的工具。
标签: python pandas python-asyncio python-3.7