Python中peewee ORM如何输出生成的SQL命令?
英文比较菜,文档里面找不到。求帮助。 可以输出最终 sql 语句,方便检查 orm 是否正确。
Python中peewee ORM如何输出生成的SQL命令?
3 回复
在peewee里看生成的SQL,直接用Model._meta.database的last_executed_query就行,但更稳的是用sql()方法或者开日志。
最直接的就是用sql(),比如:
query = User.select().where(User.active == True)
print(query.sql())
这会返回一个元组,第一个元素就是带占位符的SQL字符串。
如果你要执行前看完整的SQL(包括参数),可以这么干:
from peewee import Model, CharField, SqliteDatabase
db = SqliteDatabase(':memory:')
class User(Model):
username = CharField()
class Meta:
database = db
db.connect()
db.create_tables([User])
# 方法1:用sql()看带占位符的SQL
query = User.select().where(User.username == 'test')
sql_with_placeholders, params = query.sql()
print("SQL with placeholders:", sql_with_placeholders)
print("Parameters:", params)
# 方法2:直接打印Query对象(某些peewee版本支持)
print("Query object:", query)
# 方法3:配置数据库日志(最实用)
import logging
logger = logging.getLogger('peewee')
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.DEBUG)
# 现在执行查询就会自动打印SQL
user = User.get_or_none(User.username == 'test')
开日志那个方法最省事,一劳永逸。
总结:用sql()方法或者开peewee日志。
自己回,
import logging
logger = logging.getLogger(‘peewee’)
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler())
是这个吗?
是的,取一个叫 peewee 的 logger

