В моем коде сервера есть вызов _SO_fetchAlternateID
(вложенный в некоторый вызов value
), который в конечном итоге вызывает makeConnection
в pgconnection.py
.
Этот вызов завершается с ошибкой conn.autocommit(1)
, с ошибкой
TypeError: объект 'bool' не вызывается
Вот SQLObject's (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 работает нормально.