当前位置: 首页 > 后端技术 > Python

DjangoORM基础介绍

时间:2023-03-26 17:21:06 Python

获取对象要从数据库中获取对象,即数据记录,必须通过模型类的Manager构造一个QuerySet(默认名称为objects,可以改写)。一个QuerySet表示来自数据库的对象集合,对应SQL的SELECT语句,可以通过过滤器缩小范围,对应SQL级别的WHERE或LIMIT子句。Filter包括filter(kwargs)和exclude(kwargs),返回的都是QuerySet对象,每个QuerySet对象都是唯一的。其他常用API(1)order_by(*fields)Entry.objects.filter(pub_date__year=2005).order_by('-pub_date','headline')(2)distinct(*fields)QuerySet是惰性的,详见QuerySetHe执行时,使用python的数组切片语法限制QuerySet条目的数量,相当于SQL的LIMIT和OFFSET子句。比如Entry.objects.all()[5:10]fieldquery字段查询就是如何制定SQL的WHERE子句,以关键字参数传给filter/exclude/get。格式为:field__lookuptype=value例如,Entry.objects.filter(pub_date__lte='2006-01-01')等同于SELECT*FROMblog_entryWHEREpub_date<='2006-01-01';commonlookuptype参考QuerySetAPIreference(1)exact(default)Entry.objects.filter(pub_date=None)Entry.objects.filter(pub_date__isnull=True)(2)iexact--case-insensitive(3)contains--case-sensitiveinclusion,类似LIKE(4)icontains--不区分大小写(5)startswith/istartswith--以xx开头(6)endswith/iendswith--以xx结尾(7)inEntry.objects.filter(id__in=[1,3,4])#SELECT...WHEREidIN(1,3,4);Entry.objects.filter(headline__in='abc')#SELECT...WHEREheadlineIN('a','b','c');#你也可以使用查询集来动态计算值列表而不是提供文字列表inner_qs=Blog.objects.filter(name__contains='Cheddar')entries=Entry.objects.filter(blog__in=inner_qs)#选择。..WHEREblog.idIN(SELECTidFROM...WHERENAMELIKE'%Cheddar%')(8)gt--大于;gte——大于等于;(9)lt;升;(10)range--范围(含)importdatetimestart_date=datetime.date(2005,1,1)end_date=datetime.date(2005,3,31)Entry.objects.filter(pub_date__range=(start_date,end_date))#SELECT...WHEREpub_dateBETWEEN'2005-01-01'and'2005-03-31';

最新推荐
猜你喜欢