Django ORM使用及CRUD操作

一、Django数据库层
之前我们学了模板和视图,模板负责显示,视图负责执行逻辑,然后返回响应。
对现代的 Web 应用程序而言,视图逻辑经常需要与数据库交互。在数据库驱动型网站中,网站连接数据库服务器,从中检索数据,然后在网页中把数据显示出来。此外,可能还会提供让访客自行填充数据库的方式。
Django 非常适合构建数据库驱动型网站,它提供了简单而强大的工具(ORM),易于使用 Python 执行数据库查询。
二、ORM介绍
Object Relational Mapping,简称ORM(对象关系映射)将面向对象语言程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式(对象)转换到另外一种形式(数据库表格)。
通过ORM怎样进行转换的呢?
python中的一个类对应对应数据库中的一张表格。
python中的一个对象对应表格中的一条记录。
Python中的类的属性 对应 表格中的字段。
在这里插入图片描述
ORM优势:
ORM提供了对数据库的映射,不用直接编写SQL代码,只需像操作对象一样从数据库操作数据。让软件开发人员专注于业务逻辑的处理,提高了开发效率。

ORM劣势:
ORM的缺点是会在一定程度上牺牲程序的执行效率。
三、配置数据库
Django参考文档:
https://docs.djangoproject.com/zh-hans/2.0/ref/settings/
在这里插入图片描述
(一)配置mysql数据库
1、设置数据库配置信息
在这里插入图片描述
2、下载pymysql模块
在这里插入图片描述
运行测试(没有报错):
在这里插入图片描述
注意: django==2.1.2 需要使用mysql 5.5 以上的版本。
(二)配置 sqlit3数据库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
四、数据模型
Django 模型是使用 Python 代码(类)对数据库中数据(表格)的描述,等效于 SQL 中的 CREATE TABLE 语句,不过是用 Python 代码而非 SQL 表述的。
1、创建模型类,生成对应的数据库表格
class Person(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=32)
age = models.IntegerField()
height = models.DecimalField(max_digits=5, decimal_places=2)
weight = models.FloatField()
birthday = models.DateField()
提示:继承 models.Model 类。
2、生成迁移文件
python manage.py makemigrations

运行上述命令后,
app01 应用的 migrations 文件夹里会出现一个名为 0001_initial.py 的文件。
3、同步数据库
python manage.py migrate
migrate 命令会查看最新的迁移文件,自动更新数据库模式

4、查看生成的数据库表格
在这里插入图片描述
五、CRUD操作
crud是指增删改查
增加(Create)、读取(Read)、更新(Update)和删除(Delete)
crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。
(一)增加用户
1、创建对象并保存到数据库
(1)使用create()方法:
类名.objects.create(属性名称=xxx)
(2)使用save()方法:
类实例化
obj=model.类()
obj.属性名称=xxx

obj.save()
2、代码:
在这里插入图片描述
在这里插入图片描述
(二)查询所有用户
1、语法: 类名.objects.all() 获取所有记录。
2、代码:
在这里插入图片描述
在这里插入图片描述
1、添加模型的字符串表示形式
打印Person列表时,得到的是下述没有什么用的输出,不易区分各个 Person对象:
[<Person: person object>, <Person: person object>]
这个问题易于修正,为 Person类添加一个名为 str() 的方法即可。str() 方法的作用是告诉Python 如何以人类可读的形式显示对象。
在这里插入图片描述
(三)修改用户
1、修改用户并保存到数据库:
(1)使用save()方法
obj =类名.objects.get(‘xxx’)
obj.zz = xx

obj.save()
(2)使用update()方法
类名.objects.filter(‘xxx’).update(‘xxxx’)
2、代码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
提示: 传递id
(四)删除用户
1、语法:
①类名.objects.get(xxx).delete()
②类名.objects.filter(xxx).delete()
2、代码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值