我正在尝试与 PyGreSQL 和多处理并行运行多个查询,但下面的代码挂起而不返回:
from pg import DB
from multiprocessing import Pool
from functools import partial
def create_query(table_name):
return f"""create table {table_name} (id integer);
CREATE INDEX ON {table_name} USING BTREE (id);"""
my_queries = [ create_query('foo'), create_query('bar'), create_query('baz') ]
def execute_query(conn_string, query):
con = DB(conn_string)
con.query(query)
con.close()
rs_conn_string = "host=localhost port=5432 dbname=postgres user=postgres password="
pool = Pool(processes=len(my_queries))
pool.map(partial(execute_query,rs_conn_string), my_queries)
有什么办法让它工作吗?如果一个查询失败而另一个查询回滚,是否可以在同一个“事务”中进行 3 个正在运行的查询?