如何查看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
相关产品推荐
相关产品推荐

