• 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对应关系:

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

    类对象-----行记录

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

     

  • 相关阅读:
    IntentService使用以及源码分析
    Android HandlerThread源码解析
    Android Handler消息机制源码解析
    Gradle技术之四
    Android EditText实现小数点后几位的终级方案
    Gradle系列之三 Gradle概述以及生命周期
    Gradle系列之二 Groovy对文件的操作
    Gradle系列之一 Groovy语法精讲
    Context源码分析
    用EXCLE群发outlook邮件
  • 原文地址:https://www.cnblogs.com/open-yang/p/11221892.html
Copyright © 2020-2023  润新知