栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

第六单元 初识ORM

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第六单元 初识ORM

1.数据库
    # 元类
    class Meta:
        verbose_name='书籍信息表'  # admin页面中标的名字
        verbose_name_plural = verbose_name  # 在admin页面中标的名字 复数形式
        db_table = 'bookinfo'  # 数据库表名
        
	def __str__(self):
        return self.name

2.字段类型
类型说明
BooleanField布尔字段,值为True或False
CharField字符串,参数max_length表示最大字符个数
IntegerField整数
FloatField浮点数
DateField日期
3.选项
选项说明
null如果为True,表示允许为空,默认值是False
blank如果为True,则该字段允许为空白,默认值是False
db_column字段的名称,如果未指定,则使用属性的名称
db_index若值为True, 则在表中会为此字段创建索引,默认值是False
default默认

null是数据库范畴的概念,blank是表单验证范畴的

4.shell工具

在python终端中输入,对数据进行增删改查

python manage.py shell

使用shell时,项目不要启动

5.增删改查

在进行增删改查之前需要先导入模型类

from myapp.models import Bookinfo
5.1增加
# 新增一个数据
# 方式1
Bookinfo.objects.create(
    name='python',
    pub_date='2022-02-22',
    read_count=500,
    comment_count=200,
)
# 方式2
book = Bookinfo(
    name='python高级',
    pub_date='2022-04-22',
    read_count=200,
    comment_count=100,
)
book.save()
5.2删除
# 删除
# 方式1
Bookinfo.objects.filter(name='python').delete()
# 方式2
book = Bookinfo.objects.get(name='python高级')
book.delete()
5.3修改
# 修改
# 方式1
Bookinfo.objects.filter(name='python').update(sale_out=True)
# 方式2
book = Bookinfo.objects.get(name='python高级')
book.read_count = 222
book.save()
5.4查询 5.4.1
# 查询
Bookinfo.objects.all()
Bookinfo.objects.count()
Bookinfo.objects.get(name='射雕英雄传')
Bookinfo.objects.filter(name='射雕英雄传')

# 查询编号为1的图书
Bookinfo.objects.filter(id=1)
Bookinfo.objects.filter(id__exact=1)
# 查询书名包含'湖'的图书  带i不区分大小写
Bookinfo.objects.filter(name__contains='湖')
# 查询书名以'部'结尾的图书
Bookinfo.objects.filter(name__endswith='部')
# 查询书名为空的图书
Bookinfo.objects.filter(name__isnull=True)
# 查询编号为1或3或5的图书
Bookinfo.objects.filter(id__in=[1,3,5])
# 查询编号大于3的图书 gt大于 gte大于等于 lt小于 lte小于等于
Bookinfo.objects.filter(id__gt=3)
# 查询1980年发表的图书
Bookinfo.objects.filter(pub_date__year=1980)
# 查询1990年1月1日后发表的图书
Bookinfo.objects.filter(pub_date__gt='1990-01-01')
5.4.2 F查询

F查询是字段和字段比较

先在shell中导入F模块

from django.db.models import F # 记得在shell里导入

from django.db.models import F   # 记得在shell里导入
# 查询阅读量大于等于评论量的图书。
Bookinfo.objects.filter(read_count__gte=F('comment_count'))
# 查询阅读量大于2倍评论量的图书。
from django.db.models import F
Bookinfo.objects.filter(read_count__gt=F('comment_count')* 2)
5.4.3 Q查询

需要现在shell中导入Q模块

from django.db.models import Q 导入

# Q查询
# 查询阅读量大于20,并且编号小于3的图书。
# 方法1
Bookinfo.objects.filter(read_count__gt=20,id__lt=3)
# 方法2
Bookinfo.objects.filter(read_count__gt=20).filter(id__lt=3)
# 方法3
from django.db.models import Q
Bookinfo.objects.filter(Q(read_count__gt=20) & Q(id__lt=3))
# 查询阅读量大于20,或编号小于3的图书。
from django.db.models import Q
Bookinfo.objects.filter(Q(read_count__gt=20) | Q(id__lt=3))
# 查询编号不等于3的图书。
# 方法1  exclude是不包括的意思
Bookinfo.objects.exclude(id=3)
# 方法2
from django.db.models import Q
# ~代表相反
Bookinfo.objects.filter(~Q(id=3))
5.4.4 聚合函数

导入需要使用的聚合函数

from django.db.models import Sum , Max , Min , Avg , Count

# 聚合函数
from django.db.models import Sum , Max , Min , Avg , Count
# 查询图书的总阅读量。
Bookinfo.objects.aggregate(Sum('read_count'))
# 查询图书总数。
# 1
Bookinfo.objects.count()
# 2
Bookinfo.objects.aggregate(Count('id'))
# 查询所有书籍信息平按照阅读量排序。
# 升序排序
Bookinfo.objects.all().order_by('read_count')
# 降序排序 在前面加个 - 号
Bookinfo.objects.all().order_by('-read_count')
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/840561.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号