如何从peewee获取sql查询?

Ste*_*iss 5 python python-3.x peewee

简单的 peewee 示例:带有自动增量“id”和字符字段“name”的 MySQL 数据库“Pet”。

正在做

my_pet = Pet.select().where(name == 'Garfield')
Run Code Online (Sandbox Code Playgroud)

使用 .sql() 我们得到 sql 解释。

如何从以下位置获取原始 sql 查询:

my_pet = Pet.get(name='Garfield')
Run Code Online (Sandbox Code Playgroud)

?

col*_*fer 6

当你写:

my_pet = Pet(name='Garfield')
Run Code Online (Sandbox Code Playgroud)

数据库中什么也没有发生。

您只是创建了一个对象。没有什么神奇之处,因为 peewee 是一个 ActiveRecord ORM,并且仅在您调用Model.save()或 之类的方法时才会保存Model.create()

如果您想要 SQL 用于类似 的查询Model.create(),那么您应该考虑使用Model.insert()

insert_stmt = Pet.insert(name='Garfield')
sql = insert_stmt.sql()
new_obj_id = insert_stmt.execute()
Run Code Online (Sandbox Code Playgroud)

缺点是您没有返回模型实例,只是主键。