阿里云代理商-阿里云授权合作伙伴!助您开心上云!
欢迎您的咨询!贵宾咨询专线:158-0160-3153

列举Django ORM中2种能写SQL语句的方法

2021-02-13 06:00:19

发布:阿里云代理凯铧互联


考试题260:列举Django ORM中2种能写SQL语句的方法
靠近原生SQL --> extra()、raw()
- extra
def extra(self, select=None, where=None, params=None, tables=None, order_by=None, select_params=None)
# 构造额外的查询条件或者映射,如:子查询
Entry.objects.extra(select={'new_id': "select col from sometable where othercol > %s"}, select_params=(10,))
Entry.objects.extra(where=['headline=%s'], params=['Lennon'])
Entry.objects.extra(where=["foo='a' OR bar = 'a'", "baz = 'a'"])
Entry.objects.extra(select={'new_id': "select id from tb where id > %s"}, select_params=(10,), order_by=['-nid'])

- raw
def raw(self, raw_query, params=None, translations=None, using=None):
# 执行原生SQL
models.UserInfo.objects.raw('select * from userinfo')
# 如果SQL是其他表时,必须将名字设置为当前UserInfo对象的主键列名
models.UserInfo.objects.raw('select id as nid,name as title from 表')
# 为原生SQL设置参数
models.UserInfo.objects.raw('select id as nid from userinfo where nid>%s', params=[12,])
# 将获取的到列名转换为指定列名
name_map = {'first': 'first_name', 'last': 'last_name', 'bd': 'birth_date', 'pk': 'id'}
Person.objects.raw('SELECT * FROM some_other_table', translations=name_map)
# 指定数据库
models.UserInfo.objects.raw('select * from userinfo', using="default")




声明:本栏目所有内容均由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:sales@alibjyun.com进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

-----------------------诚信合作!互赢互利!-----------------------

最新活动| 行业动态| 最新公告| 常见问题| 关于我们| 合作联系| 付款方式| 网站地图

阿里云购买咨询

贵宾咨询专线:158-0160-3153   内蒙分公司经理:186-4746-6099

凯铧互联官网| 腾讯云代理商| 百度云代理商| 万网代理商|服务器解决方案| 凯铧网站设计 | 互联网运营笔记

CopyRight © 2020-2022 www.bjhctv.com All Rights Reserved 阿里云代理商— 北京凯铧互联科技有限公司