django - 模型层及ORM介绍

模型层及ORM介绍

  • 模型层 负责根数据库之间进行通信

  • Django配置mysql

    • 按照mysqlclient【版本msqlclient 1.3.13以上】
    • 安装前确认系统中是否安装了python3-dev和default-libmysqlclient-dev
      • sudo apt list --installed | grep -E ‘libmysqlclient-dev | python3-dev‘
      • 若没安装则执行sudo apt-get install python3-dev default -libmyqlclient-dev
      • sudo pip3 install mysqlclient
  • 创建数据库

    • 进入MySQL数据库执行 create database 数据库名default charset utf8

      • 通常数据库名称和项目名称保持一致
    • settings.py中进行数据库的配置

      • 修改DATABASES配置项的内容

        DATABASES = {
            ‘default‘: {
                ‘ENGINE‘: ‘django.db.backends.mysql‘,# 数据库引擎
                ‘NAME‘:  ‘yun_note‘, # 数据库名称
                ‘HOST‘: ‘127.0.0.1‘, #连接数据库的地址 
                ‘PORT‘: ‘3306‘, # 连接数据库的端口
                ‘USER‘: ‘root‘, # 连接数据库的用户名
                ‘PASSWORD‘: ‘123456‘, # 连接数据库的密码
        
            }
        }
        
  • 创建模型类

    • 模型类是python类,它是由django.db.models.Model派生的子类
    • 一个模型类代表数据库中的一张数据表
    • 模型类中每个类属性都代数据库中的一个字段
    • 模型是数据交互的接口,是表示和操作数据库的方式和方法
  • ORM 框架内

    • ORM object Relational Mapping 对象映射关系,它是一种程序技术,允许你使用类和对象的方式对数据库操作,避免通过sql语句来操作数据库

    • 作用:

      • 建立模型类和表之间的对应关系,通过面向对象的方式来操作数据库

      • 根据设计的模型类生成数据库中的数据表

      • 通过简单的配置就可以进行数据库类型切换

        from django.db import models
        
        # Create your models here.
        
        class users(models.Model):
            username = models.CharField(‘用户名‘, max_length=30,unique=True)
            password = models.CharField(‘密码‘, max_length=32)
            active = models.BooleanField(‘是否启用‘, default=1)
        
            createTime = models.DateTimeField(‘创建时间‘,auto_now_add=True)
            upadateTime = models.DateTimeField(‘更新时间‘, auto_now=True)
        
            # 格式化返回对象
            def __str__(self):
                return ‘username %s ‘%(self.username)
                
                
           # 数据库 迁移文件生成一个中间文件
           python manage.py makemigrations
           # 数据库迁 将每个应用下的migrations目录的中间文件同步回数据库
           python manage.py migrate
           
           生成的数据库表名默认为`应用名_模型类小写`
        

ORM 基础字段及选项

  • 模型类基础字段类型

    • BooleanField()
    • CharField()
      • 必须由max_length参数值
    • DateField()
      • auto_now:每次保存对象时,自动设置该字段为当前时间
      • auto_now_add:当第一次被创建时自动设置为当前时间
      • default:设置当前时间
      • ** 三个参数只能多选一 **
    • DateTimeField() 同DatField()
    • FloatField()
    • DecimalField()
    • EmailField()
    • IntegerField()
    • ImageField()
    • TextField()
      模型类字段先选项
  • primary_key 设置主键,如果指定字段主键,数据表中不会再自动创建id字段

  • blank 设置为True时字段可以为空,设置为False时,字段必须填写

  • null 设置为Treu,表示该列值允许为空,设置false时,建议添加default来设置默认值

  • default

  • db_index 设置为True,为该列增加索引

  • unique,设置为True,该字段在数据库中的值必须是唯一的(不能重复)

  • db_column 指定列明,若不指定则采用属性名为列明

  • verbose_name 设置此字段在admin界面上显示名称

  • Mete内部类 给模型赋予属性,可对模型类做一些控制

    from django.db import models
    
    class Book(models.Model):
    	title = models.CharField("书名",max_length=50,default=‘‘)
    	class Meta:
    		db_table = ‘book‘ # 可以改变当前模型类对应数据库的表明
    

django - 模型层及ORM介绍

上一篇:pycharm中记一次编译成exe执行文件


下一篇:202104-1 灰度直方图