在我的服务器代码中,有一个调用_SO_fetchAlternateID
(嵌套在某个调用中) ,value
最终调用makeConnection
.pgconnection.py
此调用失败conn.autocommit(1)
,出现错误
TypeError:'bool' 对象不可调用
这是 SQLObject 的 (0.8.7) 代码:
def makeConnection(self):
try:
if self.use_dsn:
conn = self.module.connect(self.dsn)
else:
conn = self.module.connect(**self.dsn_dict)
except self.module.OperationalError, e:
raise self.module.OperationalError("%s; used connection string %r" % (e, self.dsn))
if self.autoCommit:
# psycopg2 does not have an autocommit method.
if hasattr(conn, 'autocommit'):
conn.autocommit(1)
return conn
调试显示 conn 确实持有一个连接对象,但 autocommit 不是一个方法,而是一个布尔值(False)。
self.module
是模块“psycopg2”(2.4.2)。
这是配置问题吗?版本不匹配?
更新:
原因原来是 psycopg2-2.4.2 中的不兼容问题。查看 C 源代码,psycopg/connection.h 有一个整数变量不幸命名为autocommit
. 版本 2-2.4 工作正常。