一、get函数(仅能返回一条数据)。
book = BookInfo.objects
.get(id__exact = 1)
# 可以且仅可以返回一条数据。 没有数据或返回多条数据都会抛异常。
book = BookInfo.objects
.get(id = 1)
# 简写形式。 __exact可以省略。返回模型对象
二、all函数 (查询所有)
books = BookInfo.objects
.all()
# 查询所有。 返回QuerySet查询集(可以遍历)
三、filter函数 (条件查询)
# 条件查询。(可以通过逗号,连接多个条件) 返回QuerySet查询集(可以遍历)
books = BookInfo.objects.filter(title
__exact
= '天龙八部') # __exact 等于。 __exact 可以省略。 (
__iexact
不区分大小写)
books = BookInfo.objects.filter(title
__contains
= '天') # __contains 包含。模糊查询。 (__icontains 不区分大小写)
books = BookInfo.objects.filter(title
__endswith
= '部') # __endswith 以..结尾。 __startswith 以..开头。 (__iendswith 不区分大小写)
books = BookInfo.objects.filter(title
__isnull
= False) # __isnull 是否为空。 True:表示为null。 False表示not null。
books = BookInfo.objects.filter(id
__in
= [1,3,5]) # __in 范围查询。
books = BookInfo.objects.filter(id
__gt
= 3) # __gt 大于。 __lt 小于。 __gte 大于等于。 __lte 小于等于。
books = BookInfo.objects.filter(pub_date__gt =
date(1980,1,1)
) # 日期查询。
books = BookInfo.objects.filter(pub_date
__year
= 1980) # 日期查询。(year、month、day、week_day、hour、minute、second)
四、exclude函数 (filter函数取反)
# 查询id不为3的所有图书。
books = BookInfo.objects
.exclude(id = 3)
# 与filter函数作用相反。 返回QuerySet查询集(可以遍历)
五、order_by函数 (排序)
# 对查询结果进行排序。 返回QuerySet查询集(可以遍历)
books = BookInfo.objects
.all().order_by('-id')
# 'id'表示升序; '-id'表示降序。
books = BookInfo.objects.order_by('-id') # .all()可以省略。 默认查询所有。 可以结合filter等函数一起使用 。
条件格式: 模型类属性名__条件名 = 值 # 所以定义模型类属性名时不能使用多个下划线。例如:id__exact = 1 。 一、get函数(仅能返回一条数据)。book = BookInfo.objects.get(id__exact = 1) # 可以且仅可以返回一条数据。 没有数据或返回多条数据都会抛异常。book = BookInfo.objects.get...
request.path 除域名以外的请求路径,斜杠开头 “/hello/”
request.get_host() 主机名
关系型数据天然是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储
非关系型数据是大块组合在一起。通常存储在数据集中,就像文档、键值对或者图结构。
你的数据及其特性是选择数据存储和提取方式的首要影响因素。
扩展方式不同
SQL数据库是纵向扩展,关系型数据支持更多并发量,纵向扩展提高处理
django
先
excl
ude
再
filter
比如我先要过滤相等的,同时要把过滤的结果 再过滤不相等的。 我知道可以过滤一次再用for循环判断,但我想知道有没有更快捷的方法。
Python
Django
,
模型
,
查询数据库
。get()、all()、
filter
()、
excl
ude
()、
order
_by()
一、get函数(仅能返回一条数据)。
book =BookInfo.objec...
1.all()返回的是QuerySet对象(字典列表),程序并没有真的在数据库中执行SQL语句查询数据,但支持迭代,使用for循环可以获取数据。
2.
filter
() 返回的是QuerySet对象(字典),与all()相似,只是all()是查询所有数据,常用:
filter
表示‘ = ’,
excl
ude
表示’ != ’。
3.get()返回的是Model对象,类型为列表,说明使用get方法会直接执行sql语句获取数据。
通过type(),查看它们的类型
通过get()查询,返回的结果为
模型
类对象,使用get方
filter
,
filter
_by,
order
_by,group_by,having,union_all,union,distinct,limit,offset
#
filter
: 过滤; 语法:session.query(MyClass).
filter
(MyClass.name == 'some name')
result0 = db.session.query(Protocols....
views.py:
def adminEchartIncome(request):
ret = models.incomeAccount.objects.all().
order
_by("dayIncome","
id
")
# ret = serialize("json",ret)
# print(ret)
json_list = []
for i in ..
django
_
filter
可以通过定义
Filter
Set来实现关联表模糊查询。首先需要在
Filter
Set中定义关联表的字段,然后使用lookup_expr参数指定查询方式为icontains,即模糊查询。例如:
```
python
from
django
_
filter
s import
Filter
Set, Char
Filter
from myapp.models import Book, Author
class Book
Filter
(
Filter
Set):
author_name = Char
Filter
(field_name='author__name', lookup_expr='icontains')
class Meta:
model = Book
fields = ['title', 'author_name']
在上面的例子中,我们定义了一个Book
Filter
,其中author_name是一个Char
Filter
,它的field_name指定了关联表Author的name字段,lookup_expr指定了查询方式为icontains。这样,我们就可以通过Book
Filter
来实现对Book
模型
关联的Author
模型
的name字段进行模糊查询了。