【发布时间】:2019-05-31 06:32:10
【问题描述】:
我想在 postgresql 数据库上执行一些操作。这些操作对表执行选择,然后将结果行插入到具有主键的新表中,忽略违反主键约束的行。数据库中有大量的大表需要处理,看来这种任务应该异步运行。
让我印象深刻的是,解决此问题的一种方法是使用 Python 中的 subprocess 模块来运行执行这些操作的 bash 脚本,使用类似 subprocess.Popen 的东西。我可以打开许多终端会话并并行执行查询,据我了解,这种方法正在模仿这一点。
借用here的例子:
from subprocess import Popen, PIPE
import glob
f_list = glob.glob('./*bz2')
cmds_list = [['./bunzip2_file.py', file_name] for file_name in f_list]
procs_list = [Popen(cmd, stdout=PIPE, stderr=PIPE) for cmd in cmds_list]
for proc in procs_list:
proc.wait()
我的问题是:
使用
subprocess调用许多postgres 查询是否有任何明显的问题?在什么情况下我可以考虑使用
asyncio?它对上面讨论的方法有什么好处吗?
【问题讨论】:
标签: python postgresql subprocess python-asyncio