python – 避免OpenERP audittrail错误

我想通过安装audittrail模块来管理OpenERP用户的活动.

创建一些规则(定义哪个用户,哪个对象以及将监视哪个活动(创建,更新…)).我更新了一个产品,看它是否有效.

当我尝试更新产品时,我遇到了系统错误.看到日志,我明白了

[2010-08-31 12:53:35,042]光标未明确关闭

[2010-08-31 12:53:35,043]光标创建于/home/pilgrim/working/sources/addons/audittrail/audittrail.py:204

这里导致错误的行

          cr = pooler.get_db(db).cursor()

看一下sql_db.py,我收到了评论

def __del__(self):
    if not self.__closed:
        # Oops. 'self' has not been closed explicitly.
        # The cursor will be deleted by the garbage collector,
        # but the database connection is not put back into the connection
        # pool, preventing some operation on the database like dropping it.
        # This can also lead to a server overload.
        msg = "Cursor not closed explicitly\n"  \
              "Cursor was created at %s:%s" % self.__caller
        log(msg, netsvc.LOG_WARNING)
        self.close()

由于我是Python的新手,我不知道如何克服这个问题?
任何提示都可以克服这个问题?
谢谢

最佳答案 看到源代码来了解最新情况是非常重要的.

但是根据您发布的内容,看起来前一个游标未明确关闭.

cr = sqldb.db_connect(dbname).cursor()
.........
cr.close()
cr = None

我建议您破解audittrail.py以查找创建光标的位置以及关闭它们的位置.一个典型的问题是异常处理错误,导致代码跳过正常的闭包.

尝试在可疑的游标操作周围放置一个try,except和finally子句.这应该可以帮助您解决问题.

点赞