zoukankan      html  css  js  c++  java
  • ORM

    ORM(对象关系映射)

      1. 映射的关系  数据表 <--> 类  数据行 <--> 对象  字段 <--> 属性

      2. Django项目使用MySQL数据库

        1. 手动创建数据库  2. 配置数据库的连接信息,settings.py 配置 DATABASES 这个配置项  3. 用pymysql代替默认的MySQLdb

        在settings.py同目录下的__init__.py文件中  import pymysql  pymysql.install_as_MySQLdb()

        4. models.py中创建模型(类)  5. 执行两条命令  1. python manage.py makemigrations --> 将models.py中的改动登记到小本本上  2. python     manage.py migrate --> 将改动翻译成SQL语句,去数据库执行

      3. 数据库的表之间的关系

        1. 外键(ForeignKey) --> 一对多(多对一)

        2. 多对多(ManyToManyField) --> 通过第三张表建立多对多的关系

      4. 数据库的操作(增删改查)

        1. 单表操作:1. models.类名.objects.all() --> 查所有  2. models.类名.objects.get(id=1) --> 根据id查单条数据  3. models.类名.objects.get(id=1).delete()       --> 删除单条数据  4. 修改   obj = models.类名.objects.get(id=1)  obj.name = "新名字"  obj.save()  

          5. 新增models.类名.objects.create(name="张曌")

      2. 外键的操作

        # 书籍

        class Book(models.Model):

        id = models.AutoField(primary_key=True) # 自增的主键

        title = models.CharField(max_length=32) # 书籍名称 varchar(32)

        publisher = models.ForeignKey(to=Publisher) # 外键关联Publisher这张表

        book_obj --> 表示一本书的对象

        book_obj.id / book_obj.title 

        book_obj.publisher --> 和我关联的出版社对象

        book_obj.publisher_id --> 和我关联的出版社的ID值

      3. 多对多的操作

        # 作者表

        class Author(models.Model):

        id = models.AutoField(primary_key=True)

        name = models.CharField(max_length=16)

        # ORM创建多对多字段,会自动在数据库中创建第三张表

        books = models.ManyToManyField(to=Book)

        author_obj --> 一个作者对象

        author_obj.books.all() --> 作者出版的所有书(书籍对象的列表)

        author_obj.books.set([1,2,3])--> 设置作者关联的书籍(更新的是第三张表)

    Django 中 ORM相关操作

    1. ORM字段和字段参数

    1. AutoField

    2. CharField

    3. ForeignKey

    4. ManyToManyField

    2. ORM标语表之间的关系

    1. 外键关联

    2. 一对一

    3. 多对多

    1. 使用ManyToManyField() --> ORM自动帮我创建第三张表

    2. 手动创建第三张表

    3. 手动创建第三张表并设置ManyToManyField(),指定

    books = models.ManyToManyField(

    to="Book",

    through="Book2Author",

    through_fields=('author', 'book'))

    3. ORM查询操作必知必会13条

    filter()支持 双下划线 操作!

    总结一下:

    1. 返回QuerySet类型的都有哪一些

    1. all()  查询得到全部结果

    2. filter()  得到筛选包含匹配到的对象

    3. exclude()  得到除匹配到对象外的所有对象

    4. order_by()  查询结果排序,取反的话在查询条件前加-

    5. reverse()  查询结果反转排序

    6. distinct()  去重

    7. values() 得到QuerySet对象的一个字典

    8. values_list()  结果生成的列表

    2. 返回具体对象:

    1. get()  得到具体对象

    2. first()  最开始的一个对象

    3. last()  最后一个对象

    3. 返回具体数字:

     count() 具体数字,计数

    4. 返回布尔值的:

    exists() 判断是否存在返回具体布尔值

  • 相关阅读:
    你所不知道的mfc…mfc项目索引 &mfc调优指南 &mfc vc添加添加子功能指南
    Cu 大彻大悟内存管理 mm (update 0410)
    [转]Linux iostat监测IO状态
    linux virtual memory layout by moniskiller upload [读书笔记]
    河畔找到的 面经笔经
    【转】Linux本地磁盘(硬盘)介绍
    读写UTF8、Unicode文件
    codesmith执行时提示“调用的目标发生了异常”的处理过程经验。
    DB2表信息以及字段信息的表
    iBatis.NET获取resultMap相关数据
  • 原文地址:https://www.cnblogs.com/tianyu529/p/9205529.html
Copyright © 2011-2022 走看看