You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看Peewee ORM中事务/会话操作(COMMIT等)的日志?

捕获Peewee事务/会话操作日志的方案

默认配置下,peewee日志器仅输出SQL查询语句,要追踪BEGIN、COMMIT、RELEASE CONNECTION这类事务操作,可通过以下方式实现:

1. 自定义数据库类扩展日志记录

通过继承Peewee的数据库类,重写execute_sql方法,显式捕获并记录事务相关的SQL指令:

import logging
from peewee import SqliteDatabase, Model

# 基础日志配置
logger = logging.getLogger('peewee')
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.DEBUG)

class TransactionLoggingDB(SqliteDatabase):
    def execute_sql(self, sql, params=None, commit=True):
        # 匹配事务关键指令并记录
        raw_sql = sql.strip().upper()
        if raw_sql in ('BEGIN', 'COMMIT', 'ROLLBACK'):
            logger.debug(f'TRANSACTION: {raw_sql}')
        # 调用父类方法执行SQL
        return super().execute_sql(sql, params, commit)

# 初始化自定义数据库
db = TransactionLoggingDB('your_database.db')

class BaseModel(Model):
    class Meta:
        database = db

# 测试事务日志
with db.atomic():
    # 执行任意数据库操作(如插入/更新)
    pass

2. 启用Peewee内部事务日志

Peewee的Database类在_begin、_commit、_rollback等事务管理方法中,本身会输出DEBUG级别的日志。确保你的日志级别已设为DEBUG,且日志处理器未过滤这些日志。若仍未显示,可检查日志过滤器配置,或结合Peewee源码在事务方法调用处补充日志。

验证效果

配置完成后,执行事务操作时终端会输出类似日志:

DEBUG:peewee:TRANSACTION: BEGIN
DEBUG:peewee:('INSERT INTO your_table ...',)
DEBUG:peewee:TRANSACTION: COMMIT
DEBUG:peewee:RELEASE CONNECTION

这样就能清晰确认COMMIT等操作的执行时机。

内容的提问来源于stack exchange,提问作者Paweł Miezianko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 05:07:13