如何从peewee获取sql查询?

问题描述 投票:2回答:2

简单的矮人例子:具有自动增量“ id”和字符字段“ name”的MySQL DB“ Pet”。

正在做

my_pet = Pet.select().where(name == 'Garfield')

使用.sql(),我们将获得sql解释。

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

my_pet = Pet.get(name='Garfield')

python python-3.x peewee
2个回答
4
投票

写时:

my_pet = Pet(name='Garfield')

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

您仅创建了一个对象。因为魔术师是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()

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


0
投票

如果要连接到Postgres数据库,则按先令3.13,您可以通过先获取光标,然后为查询调用mogrify()来打印SQL查询。 Mogrify由psycopg2库提供,因此在连接到其他数据库时可能不可用。

© www.soinside.com 2019 - 2024. All rights reserved.