小编Bag*_*Dev的帖子

Python 在使用 Psycopg2 的 Cursor.execute() 期间挂起

我目前的Python脚本有一个问题,当我从cursor.execute()执行特定函数的SQL函数时,它运行该函数,函数完成,然后脚本挂起接近五个小时,然后才恢复其余部分的程序。

我在 pgAdminIII 中观察函数的服务器状态,因为它是从 Python 调用的,当函数完成时,服务器仅显示与我的 python 用户的打开连接。在事务空闲之前,但添加 conn.set_isolation_level(0) 后,它只显示打开的连接。

我还在cursor.execute() 周围放置了打印内容,但需要五个小时才能继续执行以下打印语句。我尝试过终止连接并重新启动,但无济于事。我将函数调用完全从脚本中删除,因此这是我的脚本处理的唯一进程。没有任何效果。

困难在于,双方都不断指责对方是问题的根源。我假设这是该特定功能的某种交互作用。也许在运行特定函数后信号没有从 postgres 发送回 python?其他函数都没有使用相同的执行方法的问题。

有想法吗?解决方案?-我正在考虑超时,但运行时间可能从 20 分钟到 2 小时不等。-它运行的函数创建一个表并仅返回一个表示“完成”的字符串,在它作为服务器状态中的活动函数消失后,所有操作都会在数据库中进行说明。

这是我用于复制问题的代码,与我的主脚本隔离:

#!/usr/bin/env python

import sys
import os
import smtplib
import ftplib
import gzip
import logging
import shutil
import argparse
import traceback
import subprocess
from email.mime.text import MIMEText

import psycopg2
import psycopg2.extras
import psycopg2.extensions
from psycopg2 import OperationalError

pg_db    = "ppl"
pg_port  = "5432"
pg_user  = "<user>"
pg_pass  = "<pass>"
pg_host  = "<host>"

# connect to database
try:
    conn = …
Run Code Online (Sandbox Code Playgroud)

python postgresql execute database-cursor

5
推荐指数
1
解决办法
6076
查看次数

标签 统计

database-cursor ×1

execute ×1

postgresql ×1

python ×1