Peewee提示“无法提交 - 没有活跃事务”
我的CherryPy应用每小时会执行一些清理工作,代码如下:
def every_hour():
two_hours_ago = time.time() - 2 * 60 * 60
DbChoice.delete().where(DbChoice.time_stamp < two_hours_ago).execute()
monitor_every_hour = Monitor(cherrypy.engine, every_hour, frequency=60 * 60)
monitor_every_hour.start()
有时候它会崩溃,并显示以下信息:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\peewee.py", line 2364, in execute_sql
self.commit()
File "C:\Python34\lib\site-packages\peewee.py", line 2371, in commit
self.get_conn().commit()
sqlite3.OperationalError: cannot commit - no transaction is active
这个帖子和其他一些帖子讨论了在直接使用sqlite时如何解决这个问题,但我使用的是Peewee,我不确定自己在使用Peewee时是否做错了什么,还是说这是一个bug,我需要找到解决办法。
我开始连接的代码是:
db = peewee.SqliteDatabase(path_name + '/doc.db', check_same_thread=False)
1 个回答
1
看起来这个查询默认是自动提交的。所以你可以试着把自动提交设置为关闭。
db = peewee.SqliteDatabase(path_name + '/doc.db', check_same_thread=False)
db.set_autocommit(False)
http://peewee.readthedocs.org/en/2.0.2/peewee/cookbook.html#changing-autocommit-behavior
希望这能帮到你!