Django(二):Django框架提供的模块---ORM


Django 框架向我们提供了丰富的模块,避免程序员在开发的过程中重复“造轮子”,提高了开发者的工作效率。

ORM

对象关系映射,它是一种基于关系型数据库的程序技术。ORM 允许你使用类和对象对数据库进行操作,这大大提高了对数据库的控制,避免了直接使用 SQL 语句对数据库进行操作。
ORM 把类映射成数据库中的表,把类的一个实例对象映射成数据库中的数据行,把类的属性映射成表中的字段,通过对象的操作对应到数据库表的操作,实现了对象到 SQL、SQL 到对象转换过程。

Django中定义数据表

ORM 把类映射成数据库中的表。
Django中模型类是数据交互的接口,一个模型类代表数据库中的一张数据表,模型类中每一个类属性都代表数据表中的一个字段。
模型类本质上属于一个 Python 类,只不过在 Django 中称之为做模型类 ,他需要继承自django.db.models中的 Model 类
Django 中模型类就相当于 ORM 模块

定义一个用户信息表,有2个字段name和password

from django.db import models
#使用 from django.db import models 导入 models 模块;
class UserInfo(models.Model):
#使用 class 关键字对 UserInfo 表进行类定义,并继承了models 模块中的 Model 类;
      name = models.CharFiled(max_length=100)
      password = models.CharFiled(max_length=100)
#表中的字段 name 和 password 是 UserInfo 类的属性,name 和 password 字段类型都是 CharFiled,字段长度均是100。

Django中类的属性代表数据表中的一个字段,针对数据库中的字段类型,Django ORM都有对应的“xxxFileld”来表示。
常用的字段类型:

字段说明属性
AutoFiled默认自增主键(Primary_key=Ture),Django 默认建立id字段为主键。
CharFiledCharFiledMax_length=32,字符长度需要明确
IntgerFiled整型 int
DateFiled年月日时间类型auto_now=True,数据被更新就会更新时间 ;auto_now_add=True,数据第一次参数时产生。
DateTimeFiled年月日小时分钟秒时间类型auto_now=True,数据被更新就会更新时间; auto_now_add=True,数据第一次参数时产生。
DecimalFiled混合精度的小数类型max_digits=3,限定数字的最大位数(包含小数位);decimal_places=2,限制小数的最大位数。
BooleanFiled布尔字段,对应数据库 tinyint 类型数据长度只有1位。值为True或False
TextFiledTextFiled

Django ORM管理器对象

ORM 把类映射成数据库中的表,把类的一个实例对象映射成数据库中的数据行,把类的属性映射成表中的字段。
每个继承自 models.Model 的模型类,都会有一个 objects 对象被同时继承下来,这个对象就叫做“管理器对象”,数据库的增删改查可以用 objects 管理器对象来实现。

在数据表中增加一行数据

UserInfo.objects.create(name='jay',password='abc123')

上面代码插入一条名字是“jay”,密码是“abc123”的数据。

更改表中的字段,用save()

Obj=UserInfo(name="jay",password="abc123")
Obj.name="john"
Obj.save()

上述代码中 name 属性值会被赋值为“john”,最后调用 save()方法保存。

数据表增删改查示例

UserInfo.objects.all()#查询表中的所有记录
UserInfo.objects.filter(name_contains='j')#查询表中name含有“j”的所有记录,被使用较多
UserInfo.objects.get(name="john")#有且只有一个查询结果,如果超出一个或者没有,则抛出异常
UserInfo.objects.get(name="john").delete()#删除名字为john的记录
UserInfo.objects.get(name="john").update(name='TOM')#更新数据表的name为TOM
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值