Python 调试从sqlalchemy执行的空闲postgres查询

Python 调试从sqlalchemy执行的空闲postgres查询,python,postgresql,sqlalchemy,Python,Postgresql,Sqlalchemy,我每天都在数据库上运行一个批处理查询。然而,它似乎被困在空闲状态,我很难调试正在发生的事情 查询是同时插入的表上的聚合,我猜这与问题有关。(聚合基于前几天的数据,因此插入不应影响结果。) 线索 我在使用sqlalchemy的python脚本中运行这个。但是,我已经将事务级别设置为“自动提交”,所以我认为事务中没有任何内容。另一方面,在sql终端中手动运行查询时,我没有看到查询挂起 通过查询pg_stat_activity,查询最初作为state='active'进入数据库。大约15秒后,状态变为

我每天都在数据库上运行一个批处理查询。然而,它似乎被困在空闲状态,我很难调试正在发生的事情

查询是同时插入的表上的聚合,我猜这与问题有关。(聚合基于前几天的数据,因此插入不应影响结果。)

线索

  • 我在使用sqlalchemy的python脚本中运行这个。但是,我已经将事务级别设置为“自动提交”,所以我认为事务中没有任何内容。另一方面,在sql终端中手动运行查询时,我没有看到查询挂起

  • 通过查询
    pg_stat_activity
    ,查询最初作为state='active'进入数据库。大约15秒后,状态变为“空闲”,此外,xact_start设置为NULL。等待标志从未设置为true

  • 在我了解sqlalchemy的事务级自动提交之前,它将改为挂起状态为“事务中空闲”,而不是“空闲”。自从做了那个改变之后,它可能挂起的频率稍微降低了一点


  • 我觉得我没有能力在这上面挖得更深。任何反馈,即使在没有给出明确答案的情况下解释更多关于不同状态和相关postgres内部的信息,都将不胜感激。

    您知道查询的具体内容吗?你们能自己打电话到数据库吗?您确定python方面存在这个问题吗?我知道确切的查询,并且可以从命令行成功调用。基于此,我倾向于认为这是一个python问题。但我还没有找到根本问题。我不知道您在调试时使用了什么,所以您可以逐步运行带有调试器的脚本并找到查询空闲的位置吗?以下是如何使用pdb:
    导入pdb;pdb.set_trace()
    n
    -下一步,
    s
    -进入,
    help
    -获取帮助。pdb不工作-它挂起在引擎中。执行。您解决了这个问题吗?我也得到了一个挂在引擎。执行。一小时前一切正常,现在,它冻结了。