码迷,mamicode.com
首页 > 其他好文 > 详细

Django之ORM对象关系模型

时间:2019-07-21 18:08:05      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:重要   设计   let   未来   bottom   技术   primary   无效   数据库   

  • 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对象关系模型

标签:重要   设计   let   未来   bottom   技术   primary   无效   数据库   

原文地址:https://www.cnblogs.com/open-yang/p/11221892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!