我在使用基本PostgreSQL实例的Heroku上托管的应用程序中使用Python 3.x并使用psycopg2库(作为“lite”)
当我在游标对象上调用Execute时,最近开始挂起。
我不知道如何解决这个问题,并且不胜感激。
以下是我实例化Connection的方法:
def getConnection():
urlparse.uses_netloc.append("postgres")
url = urlparse.urlparse(os.environ["HEROKU_STUFF_HERE"])
con = lite.connect(
database=url.path[1:],
user=url.username,
password=url.password,
host=url.hostname,
port=url.port
)
return con
以下是我通常执行非返回类型语句的方法:
def ExecuteSQL(sql):
con = DB.getConnection()
with con:
cur = con.cursor()
print("In")
cur.execute(sql)
print("out")
在将“In”字样打印到控制台后,应用程序永远不会看到灯光。
我已经离开了尝试,除了故意阻挡,以便把事情搞砸.....没有骰子。
几乎不管SQL语句是什么,我得到相同的结果
在sql客户端工具中运行相同的sql会立即执行。
我也不确定如何检测这个语句是否会进入Postgresql .....
感谢您提供的任何帮助
答案 0 :(得分:0)
psycopg2打开了直到commit()或rollback()才关闭的事务。因此,您的更改不是永久性的(docs)。
def ExecuteSQL(sql):
con = DB.getConnection()
with con:
cur = con.cursor()
cur.execute(sql)
con.commit()
或者您可以执行以下操作:
def ExecuteSQL(sql):
con = DB.getConnection()
with con:
con.autocommit = True
cur = con.cursor()
cur.execute(sql)