Django之ORM对象关系模型

Posted open-yang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django之ORM对象关系模型相关的知识,希望对你有一定的参考价值。

  • MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动
  • ORM是“对象-关系-映射”的简称。(Object Relational Mapping,简称ORM)(将来会学一个sqlalchemy,是和他很像的,但是django的orm没有独立出来让别人去使用,虽然功能比sqlalchemy更强大,但是别人用不了)
  • 在使用mysql数据库时:类和对象--->sql--->pymysql--->mysql服务端--->磁盘,orm其实就是将类对象的语法翻译成sql语句的一个引擎。

 技术图片

 

Sqlorm对比:

Sql语句操作:

创建表:

create table book(

    id int primary key auto_increment,

    name char(20) not null,

    price float(8,2) not null,

    date date not null,

    publisher varchar(32) not null

)

表记录操作:

增:

insert into book values (1,"完美人生",10.00,‘2019-05-24‘,"未来出版社");

删:

delete from book where id=1

改:

update book set price=‘20.00‘ where id=1;

查:

select * from book;

select * from book where id=1;

 

 

orm操作数据库:

app应用models.py中定义类:

    from django.db import models

# orm中定义的类对应表名,属性对应表字段

# orm中类型调用不同的models类进行定义,约束不指定null默认为不允许为空,字符串必须指定最大长度

# orm中不指定主键,在创建时自动创建一个字段为id的主键,可以使用id或者pk使用

class Book(models.Model):

    # id=models.AutoField(primary_key=True)

    name=models.CharField(max_length=20,null=True)

    price=models.FloatField()

    date=models.DateField()

    publisher=models.CharField(max_length=32)

运行创建:

Tools--->Run managy.py Task:

命令:makemigrations --->   migrate

操作数据库表(在view视图中定义函数操作,先导入app应用中的models.py模块):

增:

# 第一种:实例化一个model对象,然后调用对象的save方法

obj=models.Book(name="完美人生",price=10.00,date=‘2019-05-24‘,publisher=未来出版社)

obj.save()

# 第二种:直接调用objects控制器的create方法(常用)

models.Book.objects.create(name="完美人生",price=10.00,date=‘2019-05-24‘,publisher=未来出版社)

 

删:

models.Book.objects.filter(id=1).delete()

 

改:

models.Book.objects.filter(id=3).update(price=20)

 

(get查询只能是有且只有一条记录符合查询结果,多或少都报错)

models.Book.objects.all()

models.Book.objects.filter(id=1) /models.Book.objects.get(id=1)

 

 

ORM对应关系:

--------------

类对象-----行记录

属性---------表字段

 

以上是关于Django之ORM对象关系模型的主要内容,如果未能解决你的问题,请参考以下文章

django框架之模型

Django之模型

Django框架 之 ORM中介模型

Django之ORM操作

Django之ORM框架的使用

Django之模型---ORM简介