psycopg2.InternalError: ALTER SYSTEM cannot run inside a transaction block
在用python写Postgresql的一个脚本的时候,出现了如题目所示的问题,从错误提示的字面意思看是因为 ALTER SYSTEM无法运行在事务块中,查了一些资料后大概明白是什么问题导致的,因为版本的原因导致psycopy2不支持execute() 执行带有alter等关键字的sql执行语句,需要对代码做一下小小的修改就可以了
原来的代码如下:
# 这里只展示部分代码
def Execute(self, sql, params=None):
self.error = ""
try:
if params:
if not isinstance(params, tuple) and not isinstance(params, list) and not isinstance(params, dict):
params = (params,)
# 就是执行下面这行代码的时候报错的
self.cursor.execute(sql, params)
else:
self.cursor.execute(sql)
self.conn.commit()
except Exception, e:
try:
self.conn.rollback()
except:
pass
self.error &#