gpt4 book ai didi

python - PostgreSQL DROP TABLE 查询卡住

转载 作者:行者123 更新时间:2023-11-29 12:49:32 40 4
gpt4 key购买 nike

我正在编写代码,在 Anaconda 的 Spyder 环境中用 Python 创建一个 GUI。在此代码中,我使用 PostgreSQL 数据库进行操作,因此我使用 psycopg2 数据库适配器,以便我可以直接从 GUI 进行交互。

代码太长,无法在此处发布,因为它超过 3000 行,但总而言之,除了尝试删除表时,我与数据库交互没有问题。

当我这样做时,GUI 框架变得无响应,drop table 查询不会删除预期的表,也不会抛出任何错误或任何其他类型的错误。

在我的代码中,导致表被删除的所有操作都是通过函数 (DeleteTable) 处理的。当我调用这个函数时,没有任何问题,因为我之前插入了几个打印语句,确认一切正常。当我使用 cur.execute(sql) 代码行执行语句时出现问题。

有人能弄清楚为什么我的表格不会掉落吗?

def DeleteTable(table_name):

conn=psycopg2.connect("host='localhost' dbname='trial2' user='postgres' password='postgres'")
cur=conn.cursor()
sql="""DROP TABLE """+table_name+""";"""
cur.execute(sql)
conn.commit()

最佳答案

那一定是因为并发事务持有一个锁,阻止了 DROP TABLE 语句。

检查 pg_stat_activity View 并注意 state 等于 idle in transactionactive 的 session 有超过几秒前的 xact_start

这本质上是一个应用程序错误:您必须确保立即关闭所有事务,否则可能会发生坏事。

关于python - PostgreSQL DROP TABLE 查询卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57656088/

40 4 0