Django模型(一)

一、介绍

image-20220929155823965

模型,就是python中的类对应数据库中的表

1.1、ORM

ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写

image-20220918154228986

ORM 把数据库映射成对象

image-20220918154956326

1.2、示例

1.2.1、模型
from django.db import models


class Person(models.Model):
  first_name = models.CharField(max_length=30)
  last_name = models.CharField(max_length=30)
1.2.2、数据库表
CREATE TABLE myapp_person (
  "id" bigint NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
  "first_name" varchar(30) NOT NULL,
  "last_name" varchar(30) NOT NULL
);

说明

  1. 模型类必须继承models.Model
  2. 每个属性对应数据库表中的一个字段
  3. 表名自动使用 应用_类名 的小写(如:polls_question),可以覆盖重写
  4. 如果模型类中没有指定 primary_key ,那么会自动创建一个 id 字段,自增,主键

二、MySQL数据库迁移 

image-20220929154628521

当编写了模型之后,需要将模型应用到数据库中,具体步骤如下:

  1. 创建项目model_study,及子应用model_app

    #创建项目
    $ django-admin startproject model_study
    #进入项目目录创建子应用
    $ python manage.py startapp model_app
    
  2. 配置应用,将模型对应的应用程序添加到项目的settings中:

    INSTALLED_APPS = [
      'model_app'
    ]
    
  3. 在settings.py中配置正确的数据库连接:

    # mysql
    DATABASES = {
      'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'model_study',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '127.0.0.1',
        'PORT': 3306,
       }
    }
    

注意

  • 需要安装对应数据库的驱动

    • pip install mysqlclient==2.1.1

    • pip install pymysql

      # __init__.py
      import pymysql
      pymysql.install_as_MySQLdb()
      
  • 需要在mysql数据库中创建数据库model_study

2.1、创建迁移

在项目根目录的cmd中运行:

$ python manage.py makemigrations model_app

备注

  1. model_app是子应用的名称,如果不指定,那么就是对所有 INSTALLED_APPS 中的应用都进行预备迁移
  2. 指定该命令后,在对应的子应用下的 migrations 中会生成一个对应的迁移文件

2.2、正式迁移

在根目录的cmd中运行:

$ python manage.py migrate

备注

没有添加子应用名,那么就会把django项目中所有的应用都迁移到数据库中

三、sqlite3数据库迁移

image-20220929165658059

当编写了模型之后,需要将模型应用到数据库中,具体步骤如下:

  1. 创建项目model_study,及子应用model_app

    #创建项目
    $ django-admin startproject model_study
    #进入项目目录创建子应用
    $ python manage.py startapp model_app
    
  2. 配置应用,将模型对应的应用程序添加到项目的settings中:

    INSTALLED_APPS = [
      'model_app'
    ]
    
  3. 在settings.py中配置正确的数据库连接:

    # sqlite3
    DATABASES = {
      'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
       }
    }
    

    注意

    • 需要安装对应数据库的驱动
    • 需要在mysql数据库中创建数据库model_study

    3.1、创建迁移

    在项目根目录的cmd中运行:

    $ python manage.py makemigrations model_app
    

    备注

    1. model_app是子应用的名称,如果不指定,那么就是对所有 INSTALLED_APPS 中的应用都进行预备迁移
    2. 指定该命令后,在对应的子应用下的 migrations 中会生成一个对应的迁移文件

    3.2、正式迁移

    在根目录的cmd中运行:

    $ python manage.py migrate
    

    备注

    没有添加子应用名,那么就会把django项目中所有的应用都迁移到数据库中

    四、更新数据库表结构

    image-20220929155039429

    不管是新增模型,还是修改已有模型后,只需要执行行命令即可:

    4.1、创建迁移

    在项目根目录的cmd中运行:

    $ python manage.py makemigrations model_app
    

    备注

    1. model_app是子应用的名称,如果不指定,那么就是对所有 INSTALLED_APPS 中的应用都进行预备迁移
    2. 指定该命令后,在对应的子应用下的 migrations 中会生成一个对应的迁移文件

    4.2、正式迁移

    在根目录的cmd中运行:

    $ python manage.py migrate
    

    备注

    没有添加子应用名,那么就会把django项目中所有的应用都迁移到数据库中

    4.3、设置表名

    在模型中建立内部类Meta设置db_table即可

    # Create your models here.
    class Person(models.Model):
      first_name = models.CharField(max_length=10)
      lname = models.CharField(max_length=30)
      age = models.CharField(max_length=30)
    
    
      class Meta:
        db_table = 't_person'
    

相关推荐

  1. Django模型

    2024-01-28 20:14:03       51 阅读
  2. Django模型

    2024-01-28 20:14:03       42 阅读
  3. Django模板

    2024-01-28 20:14:03       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-28 20:14:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-28 20:14:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-28 20:14:03       82 阅读
  4. Python语言-面向对象

    2024-01-28 20:14:03       91 阅读

热门阅读

  1. Redis:Could not get a resource from the pool

    2024-01-28 20:14:03       55 阅读
  2. Linux ping命令详解

    2024-01-28 20:14:03       49 阅读
  3. Python爬虫的简单实践

    2024-01-28 20:14:03       61 阅读
  4. Hive之set参数大全-20

    2024-01-28 20:14:03       33 阅读
  5. thinphp 调用 \think\Log::write 写入回调日志信息

    2024-01-28 20:14:03       55 阅读
  6. 软考笔记--数据库系统-数据库模式

    2024-01-28 20:14:03       58 阅读
  7. SpringBoot AOP应用(公共字段填充)

    2024-01-28 20:14:03       57 阅读
  8. muduo源码阅读笔记(11、TcpClient)

    2024-01-28 20:14:03       50 阅读
  9. 【代码管理】TortoiseGit 图标没有显示

    2024-01-28 20:14:03       59 阅读
  10. 第6题 特殊回文数

    2024-01-28 20:14:03       57 阅读
  11. 二叉树

    二叉树

    2024-01-28 20:14:03      53 阅读
  12. 数据结构——顺序队列(循环)

    2024-01-28 20:14:03       51 阅读