由于一些极其复杂的查询,orm搞不定的,有三种方式实现原生sql查询
extra:提供额外查询参数的机制,一定程度上可以实现sql注入
1 where 设置查询条件,params 如果where设置了字符串
In [2]: s=Vocation.objects.extra(where=["job=%s or 1=1","baz = 'a'"],params=["设计"])
In [3]: s
Out[3]: <QuerySet [<Vocation: 3>]>
新增查询字段
In [2]: ss=Infos.objects.extra(select={"seat":"%s"},select_params=["seatInfo"])#select_params为 select的%s提供参数
In [3]: print(ss.query)
SELECT (seatInfo) AS `seat`, `Infos`.`id`, `Infos`.`job`, `Infos`.`title`, `Infos`.`payment`, `Infos`.`name_id` FROM `Infos`
链接数据表
In [4]: s=Vocation.objects.extra(tables=["test_personinfo"], order_by=['-nid'])
In [5]: s
Out[5]