问题是罐子上写着什么。我目前有一个正在使用当前工作流程的项目:
将所有数据从工作区拉入python
在每一列中搜索关键字词列表
返回点击
下一个数据库并重复
通过在关键术语搜索(第2步和第3步)上运行current.futures,我已经能够将额外的效率压缩到循环中,这使我可以同时运行所有内核。现在,我想看看是否可以通过加快数据库调用的速度来提高效率(步骤1)
这是我当前的代码
import psycopg2
conn = pg.connect(
host=host,
database=database,
username=username,
password=password
)
SQLselect= '''
select *
from {}
'''
for databese in databases:
cur=conn.cursor('database')
call=cur.execute(SQLselect.format(database))
rows=cur.fetchall
cols=[desc[0] for desc in cur.description]
temp = pd.DataFrame(rows, columns=cols
除此方法外,我还尝试使用psycopg2的copy_to方法。我认为这样做会更快,因为copy_from方法效果很好。但是,这实际上比我上面的代码要慢。有什么办法可以加快速度或更有效地执行此操作吗?
最佳答案
如果目标是尽快在所有这些DB上执行SQL,并且它们与顺序无关,那么您可以并行/并行运行它们。
我将在链接here中查看一些潜在的解决方案。
关于python - 使用psycopg2将数据从Postgresql提取到python的最快/最有效方法是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59741267/