简单的矮人例子:具有自动增量“ id”和字符字段“ name”的MySQL DB“ Pet”。
正在做
my_pet = Pet.select().where(name == 'Garfield')
使用.sql(),我们将获得sql解释。
如何从以下位置获取原始SQL查询:
my_pet = Pet.get(name='Garfield')
?
写时:
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()
缺点是您没有返回模型实例,仅返回主键。
如果要连接到Postgres数据库,则按先令3.13
,您可以通过先获取光标,然后为查询调用mogrify()
来打印SQL查询。 Mogrify由psycopg2
库提供,因此在连接到其他数据库时可能不可用。