gpt4 book ai didi

Python 错误 : execute cannot be used while an asynchronous query is underway

转载 作者:太空狗 更新时间:2023-10-29 22:30:03 27 4
gpt4 key购买 nike

如何防止错误“ProgrammingError: execute cannot be used while an asynchronous query is underly”?从文档中可以看出,如果我使用像 gevent 这样的协程支持,我应该使用 psycopg2.extras.wait_select,但我在使用它时仍然遇到该错误。我已经隔离了我在下面的代码片段中遇到的错误。

con = psycopg2.connect(database=DATABASE_NAME, user=DATABASE_USERNAME)

def execute_query(cur, query, params):
psycopg2.extras.wait_select(con)
cur.execute(query, params)
psycopg2.extras.wait_select(con)
rows = cur.fetchall()
print rows[0]

cur = con.cursor()
query = "SELECT * FROM mytable"
gevent.joinall([
gevent.spawn(execute_query, cur, query, None),
gevent.spawn(execute_query, cur, query, None),
gevent.spawn(execute_query, cur, query, None),
gevent.spawn(execute_query, cur, query, None)
])

最佳答案

您正在尝试在一个连接上同时进行多个事务。 psycopg 文档说这不是线程安全的,会导致错误。参见 Asynchronous support and Support for coroutine libraries

一种可能的解决方案是每个协程使用一个数据库连接,每个连接有一个游标(在本例中为 4 个不同的连接和游标)。

关于Python 错误 : execute cannot be used while an asynchronous query is underway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29869118/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com