Django中的ORM基础

Django 非常适合构建数据库驱动型网站,它提供了简单而强大的工具(ORM),易于使用 Python 执行数据库查询。模板和视图,模板负责显示,视图负责执行逻辑,然后返回响应。对现代的 Web 应用程序而言,视图逻辑经常需要与数据库交互。Object Relational Mapping,简称ORM(对象关系映射)将面向对象语言程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式(对象)转换到另外一种形式(数据库表格)。
python中的一个类对应对应数据库中的一张表格。
python中的一个对象对应表格中的一条记录。
Python中的类的属性 对应 表格中的字段。

Python对应ORM
表格
对象记录
属性字段

django.db.models包,字段类型

类型描述
AutoField自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性(主键)
BooleanField布尔字段,值为True或False。
NullBooleanField支持Null、True、False三种值。
CharField(max_length=最大长度)字符串。参数max_length表示最大字符个数。
TextField大文本字段,一般超过4000个字符时使用。
IntegerField整数
DecimalField(max_digits=None, decimal_places=None)十进制浮点数。参数max_digits表示总位。参数decimal_places表示小数位数。
FloatField浮点数
DateField:([auto_now=False, auto_now_add=False])日期。
1)参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false。
2) 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false。
3)参数auto_now_add和auto_now是相互排斥的,组合将会发生错误.
TimeField时间,参数同DateField。
DateTimeField日期时间,参数同DateField。
FileField上传文件字段。
ImageField继承于FileField,对上传的内容进行校验,确保是有效的图片。
注意:ImageField()字段需要借助pillow模块才能使用,因此需要先下载pillow模块。Python3.6后 使用PIL模块。

通过选项实现对字段的约束,选项如下:

选项名描述
default默认值。设置默认值。
primary_key若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用。
unique如果为True, 这个字段在表中必须有唯一值,默认值是False。
db_index若值为True, 则在表中会为此字段创建索引,默认值是False。
db_column字段的名称,如果未指定,则使用属性的名称。
null如果为True,表示允许为空,默认值是False。

常用方法

方法用法
first()返回第一条记录,返回具体的某个模型类的对象
last()返回最后一条记录,返回具体的某个模型类的对象
get(**kwargs)返回具体的某个模型类的对象
返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会 抛出错误。
filter()返回 QuerySet 列表对象,可多个
all()返回 QuerySet 列表对象,查询所有结果
exclude()返回 QuerySet 列表对象,它包含了与所给筛选条件不匹配的对象
order_by()返回 QuerySet 列表对象,
(1)根据多个字段进行排序
(2)反向排序可以在字段名称前面加上“-”(减号)
(3)在模型中指定默认排序
reverse()返回 QuerySet 列表对象,对查询结果反向排序,
通常只能在具有已定义顺序的QuerySet上调用(在model 类的Meta中指定ordering或调用order_by()方法)。
values()返回一个ValueQuerySet(一个特殊的QuerySet),运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列
values_list()它与values()非常相似,它返回的是一个元组序列
exists()如果QuerySet包含数据,就返回True,否则返回False
count()返回数据库中匹配查询(QuerySet)的对象数量

双下划线方法

方法名称例子
xx__lt小于id__lt =2,获取 id小于2的所有记录
xx__gt大于id__gte=30 获取id大于等于30的所有记录
xx__in包含某些值id__in=[10,5] 获取id为10,5的所有记录
xx__range()查找范围id__range=[10,20]返回id在10至20之间的记录
xx__contains()包含某个字符的记录name__contains='t’获取name包含’t’的记录
xx__startswith获取 以 xx开头的记录name__startswith='t’获取name以‘t’开头的记录
xx__endswith获取以xx结尾的记录name__iendswith ='t’获取name以’t’结尾的记录,加’i’忽略大小写
xx__datedate类型字段可以根据年月日进行过滤birthday__year = '2019’获取birthday中year是2019的记录
主要内容:本文详细介绍了一种QRBiLSTM(分位数回归双向长短期记忆网络)的时间序列区间预测方法。首先介绍了项目背景以及模型的优势,比如能够有效利用双向的信息,并对未来的趋势上限和下限做出估计。接着从数据生成出发讲述了具体的代码操作过程:数据预处理,搭建模型,进行训练,并最终可视化预测结果与计算分位数回归的边界线。提供的示例代码可以完全运行并且包含了数据生成环节,便于新手快速上手,深入学习。此外还指出了模型未来发展的方向,例如加入额外的输入特性和改善超参数配置等途径提高模型的表现。文强调了时间序列的标准化和平稳检验,在样本划分阶段需要按时间序列顺序进行划分,并在训练阶段采取合适的手段预防过度拟合发生。 适合人群:对于希望学习和应用双向长短时记忆网络解决时序数据预测的初学者和具有一定基础的研究人员。尤其适用于有金融数据分析需求、需要做多一步或多步预测任务的从业者。 使用场景及目标:应用于金融市场波动预报、天气状况变化预测或是物流管理等多个领域内的决策支持。主要目的在于不仅能够提供精确的数值预计还能描绘出相应的区间概率图以增强结论置信程度。 补充说明:本教程通过一个由正弦信号加白噪构造而成的简单实例来指导大家理解和执行QRBiLSTM流程的所有关键步骤,这既方便于初学者跟踪学习,又有利于专业人士作为现有系统的补充参考工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值