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

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

    类对象-----行记录

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

     

  • 相关阅读:
    JavaScript类属性
    JavaScript实现通过的集合类
    Asp.net mvc自定义Filter简单使用
    [转] js实现html table 行,列锁定
    学习笔记:HTML5 Canvas绘制简单图形
    学习笔记:Asp.Net MVC更新部分页面
    Dom随手记
    页面刷新或关闭前警告
    C# 创建WebServices及调用方法
    常用Web Service汇总(天气预报、时刻表等)
  • 原文地址:https://www.cnblogs.com/open-yang/p/11221892.html
Copyright © 2011-2022 走看看