文章目录
- (一)Django环境搭建
- (二)创建Django项目
- (三)配置Django的数据库连接
- (四)数据迁移命令
- (五)Shell方式添加数据
- (六)Shell方式更新和删除图书数据
- (七)Shell方式查询图书数据
- 1.测试数据准备![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e5e557c54897d1e81de251f3fee9865b.png)
- 2.all()查询所有数据
- 3.使用切片查询指定条数的记录
- 4.使用values()查询指定字段
- 5.使用values_list()查询指定字段
- 6.使用get()查询数据
- 7.使用filter()查询数据
- 8.使用filter()多条件查询数据
- 9.在filter()查询条件中使用字典参数
- 10.在filter()中使用Q函数进行or查询
- 11.不等于查询“~”
- 12.不等于查询exclude()
- 13.使用count()查询数据量
- 14.使用distinct()去重
- 15.字段排序order_by()
(一)Django环境搭建
1.cmd下安装Django
pip install django
2.查看django详细信息
pip show Django
3.验证django安装是否正确
python
import Django
Django.get_version()
4.查询Django版本,检查是否正确安装,窗口输出版本号则正确
python -m django --version
(二)创建Django项目
1.在根目录创建django_demo
django-admin startproject django_demo
2.创建Django项目的App
cd django_demo
django-admin startapp first_app
3.命令行启动Django项目
python manage.py runserver
http://127.0.0.1:8000/(浏览器访问该web应用)
(三)配置Django的数据库连接
1.新建数据库
2.MySQL数据库配置
‘ENGINE’:数据库引擎名称
‘NAME’:数据库的名称
‘USER’:连接数据库的用户名
‘PASSWORD’:连接数据库的密码
‘HOST’:数据库的ip地址
‘PORT’:数据库对应开放的端口号
(四)数据迁移命令
1.安装mysqlcient
pip install mysqlclient
2.执行命令makemigrations
在pycharm的项目中,启动终端,执行以下命令:
python manage.py makemigrations
3.执行命令migrate
python manage.py migrate
(五)Shell方式添加数据
通过shell交互式命令快速掌握DJango为数据库添加数据的方式。
1.使用save()添加数据
方法一
在pycharm终端下先执行以下命令,进入shell操作界面
python manage.py shell
从books.models中引入Type模型类
from books.models import Type
实例化Type类,生成一个Type类的对象t
t = Type(first='文学',second='小说')
调用对象t的save()方法,把t携带的数据保存到数据库表books_type中
t.save()
方法二
from books.models import Type
t = Type()
t.first = '文学'
t.second = '诗词'
t.save()
2.使用create()添加数据
方法一
from books.models import Type
t = Type.objects.create(first='文学',second='戏剧')
t.id
方法二
from books.models import Type
d = dict(first='文学',second='散文')
t = Type.objects.create(**d)
t.id
数据记录
3.使用get_or_create()添加数据
from books.models import Type
d=dict(first='哲学',second='逻辑学')
t=Type.objects.get_or_create(**d)
t[0].id
t=Type.objects.get_or_create(**d)
t[0].id
4.使用update_or_create()更新或添加数据
from books.models import Type
d=dict(first='哲学',second='论理学')
t= Type.update_or_create(**)
t
t= Type.update_or_create(**)
t
t= Type.objects.update_or_create(**d,defaults={'second':'美学'})
t
t[0].second
5.使用bulk_create()批量添加数据
from books.models import Type
t1=Type(first='哲学',second='认识论')
t2=Type(first='哲学',second='形而上学')
obj_list = [t1,t2]
Type.objects.bulk_create(obj_list)
(六)Shell方式更新和删除图书数据
1.使用get()+save()更新数据
引入模型Type
from books.models import Type
查询id为1的模型对象
t= Type.objects.get(id=1)
突出模型字段的值
print(t.id,t.first,t.second)
修改模型字段second的值为“歌剧”
t.second = '歌剧'
保存修改的结果
t.save()
2.使用update()更新全部数据
from books.models import Type
Type.objects.update(second='小说')
3.使用filter()+update()更新符合条件的数据
from books.models import Type
更新id为1的模型对象,把字段值second修改为“小说”
Type.objects.filter(id=1).update(second='小说')
实例化1个字典,key为second,value为“诗歌”
d = dict(second='诗歌')
更新id为1的模型对象,把字段值second修改为“诗歌”,使用字典做update的参数
Type.objects.filter(id=1).update(**d)
4.使用内置F方法实现数据的自增或自减
from books.models import Type
from django.db.models import F
t = Type.objects.filter(id=1)
t.update(id=F('id')+10)
注意:修改后的id值不应该与其他记录的id值重复,否则会报主键重复错误。
5.使用bulk_update()批量更新数据
from books.models import Type
t1= Type.objects.filter(id=2)
t2=Type.objects.get(id=3)
t1.second = '诗歌'
t2.first= '工具书'
Type.objects.bulk_update([t1,t2],fields=['second','first'])
6.使用all()+delete()删除全部数据
from books.models import Type
Type.objects.all().delete()
7.使用get()+delete()删除1条数据
from books.models import Type
Type.objects.get(id=2).delete()
8.使用filter()+delete()删除一批数据
from books.models import Type
Type.objects.filter(first='哲学').delete()
9.删除模型PersonInfo中的数据
python manage.py makemigrations
PersonInfo.objects.get(id=1).delete()
(七)Shell方式查询图书数据
1.测试数据准备![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e5e557c54897d1e81de251f3fee9865b.png)
2.all()查询所有数据
from books.models import PersonInfo,Vocation
v = Vocation.objects.all()
v
3.使用切片查询指定条数的记录
from books.models importVocation
v = Vocation.objects.all()[:3]
v
4.使用values()查询指定字段
from books.models importVocation
v = Vocation.objects.values('job')
v
5.使用values_list()查询指定字段
from books.models importVocation
v = Vocation.objects.values_list('job')
v = Vocation.objects.values_list('job')[:3]
v
6.使用get()查询数据
from books.models importVocation
v= Vocation.objects.get(id=5)
v
7.使用filter()查询数据
from books.models importVocation
v=
Vocation.objects.filter(id=5)
v
8.使用filter()多条件查询数据
from books.models importVocation
v= Vocation.objects.filter(job='软件工程师',payment=15000)
v
9.在filter()查询条件中使用字典参数
from books.models importVocation
d ={"job":"软件工程师","payment":15000}
v= Vocation.objects.filter(**d)
v
d = dict(job="软件工程师",payment=15000)
v= Vocation.objects.filter(**d)
v
10.在filter()中使用Q函数进行or查询
from django.db.models import Q
from books.models importVocation
v= Vocation.objects.filter(Q(job='软件工程师')|Q(job='项目经理'))
v
11.不等于查询“~”
from django.db.models import Q
from books.models importVocation
v=
Vocation.objects.filter(~Q(job='软件工程师'))
v
12.不等于查询exclude()
from django.db.models import Q
from books.models importVocation
v= Vocation.objects.exclude(job='软件工程师')
v
13.使用count()查询数据量
from books.models importVocation
v= Vocation.objects.all().count()
v
14.使用distinct()去重
from books.models importVocation
v=
Vocation.objects.values('job').filter(job='网站设计师')
v
v= Vocation.objects.values('job').filter(job='网站设计师').distinct()
v
15.字段排序order_by()
from books.models importVocation
v = Vocation.objects.all().order_by('id')
v
子任务1 聚合查询求和及求平均数
1.annotation()+sum()求和
2.并集union()操作
3.交集intersection()操作
4.difference()去除共同数据操作
子任务2 查询条件匹配符的使用
get()和filter()的差异:
get():
查询的字段必须是主键或者唯一约束的字段,并且查询的数据必须存在,如果查询的字段有重复值或者查询的数据不存在,程序会抛出异常信息。
filter():
查询字段没有限制,只要该字段是数据表的某一字段即可。查询结果以列表形式返回,如果查询结果为空,就返回空列表。
子任务3 两表关联查询(1:1和1:N)
1.正向查询,查询条件在查询对象中
2.反向查询,查询条件在查询对象中
3.正向查询,查询条件不在查询对象中
4.反向查询,查询条件不在查询对象中
5.使用select_related()查询
子任务4 三表关联查询(两个1:N)
1.模型定义
2.数据迁移
3.准备测试数据
4.三表关联查询
子任务5 多对多查询
1.模型定义
2.数据迁移
3.数据准备
4.多对多关联查询prefetch_related()
子任务6 原生SQL查询
1.extra查询
2.raw查询
3.execute查询