数据库查询的相关知识点
数据库查询
模型类.objects.查询函数
1.1查询相关参数
all没有参数
get可以写查询条件,查询满足条件一条且只能有一条数据
filter可以写查询条件,查询的是满足条件的数据
exclude可以写查询条件,返回的是不满足条件的所有数据
order_by是排序,参数是排序字段
aggregate聚合,参数是聚合类,返回的是一个字典
count没有参数,返回查询结果的数量,返回是一个数字
1.2条件查询
注意:可以写多个查询条件,默认是且的关系
对应get,filter,exclude参数中可以写查询条件
格式:属性名__条件名=值
1.3F对象
用于查询时字段之间的比较
from django.db.models import F
1.4Q对象
用于查询时条件之间的逻辑关系
from django.db.models import Q
与&;
或|
非~
1.5聚合
聚合类:
from django.db.models import Count, Sum,Avg,Max,Min
aggregate
1.6排序
默认是升序,如果想要降序,在查询字段前写减号。
order_by
1.7关联查询
1、查询和指定对象关联的数据(重点掌握)
由一查多:一对象.多类名小写__set.all()
由多查一:多对象.外键属性
2、通过模型类进行关联查询
查图书:一类.objects.get|filter(多类名__字段__条件=值)
查英雄:多类.objects.filter(外键属性__字段__条件=值)
2.查询集
注意:对于queryset类的对象,可以继续调用之前的任何一个查询函数。
all,filter,exclude,order_by这四个函数返回的是查询集对象
例如:查询id大于3的图书数量
BookInfo.objects.filter(id__gt=3).count()
exists:判断查询集中是否有数据。True代表有,False代表没有。
两大特性:
1、惰性查询:只有在使用查询集中的数据时才会进行数据库真正查询操作
2、查询结果的缓存:如果使用同一个查询集时,只有在*一次使用查询集时会进行数据库的查询操作,然后Django框架就会把查询的结果存起来,下一次再使用这个查询集的时候,使用的是Django之前存储的结果。
特点:可以向list列表一样进行操作,可以遍历,可以取下标,可以切片,但是切片的时候下标不允许为负数。
注意和特点重点掌握,其他的了解一下就可以了。
3.admin站点
Django框架提供了一个admin站点,可以让用户来管理网站的数据表的内容。
3.1使用
1.语言和时区的本地化
2.创建管理员用户
python manage.py createsuperuser
3.在admin.py中注册模型类
4.自定义admin站点管理页面
1)在admin.py中定义模型admin的管理类,继承于admin.ModelAdmin
2)admin.site.register(模型类,admin管理类)
3)在Admin管理类中通过对应的类属性控制admin界面内容
3.2图片上传
Django自带文件存储系统,可以直接通过admin站点进行图片的上传,默认上传的文件保存在服务器本地。
使用:
1、在配置文件中设置配置项MEDIA_ROOT=‘上传文件的保存目录’
2、定义模型类时,图片字段的类型使用’imageField’
3、迁移生成表,并在admin.py注册模型类,直接登录admin站点就可以进行图片上传。
注意:在迁移生成表的时候,我们有可能碰到一个错误:
django.db.utils.InternalError: (1050, "Table 'tb_books' already exists")
这个错误发生,是因为我们删除过数据库里面的表格,我们需要执行以下下面的操作:
# 先进入我们的数据库,然后选择这个表 select * from django_migrations; # 将我们的迁移过的文件加到这张表里,我们在迁移文件生成表的时候就不会出现这个错误了。里面的name是我们的迁移文件,app时我们的子应用名,时间时随便填,但是要符合格式。 insert into django_migrations(id,app,name,applied) values(15,'booktest','0001_initial','2019-01-17 07:29:10.391789');
更多培训课程,学习资讯,课程优惠等学校信息,请进入 郑州金水区java培训郑州上街区C语言培训 网站详细了解,免费咨询电话:400-998-6158