zoukankan      html  css  js  c++  java
  • 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对应关系:

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

    类对象-----行记录

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

     

  • 相关阅读:
    Windows XP下 Android开发环境 搭建
    Android程序的入口点
    在eclipse里 新建android项目时 提示找不到proguard.cfg
    64位WIN7系统 下 搭建Android开发环境
    在eclipse里 新建android项目时 提示找不到proguard.cfg
    This Android SDK requires Android Developer Toolkit version 20.0.0 or above
    This Android SDK requires Android Developer Toolkit version 20.0.0 or above
    Android requires compiler compliance level 5.0 or 6.0. Found '1.4' instead
    Windows XP下 Android开发环境 搭建
    Android程序的入口点
  • 原文地址:https://www.cnblogs.com/open-yang/p/11221892.html
Copyright © 2011-2022 走看看