yyz notes yyz notes
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

益章

可乐鸡翅
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • python基础

  • python高级

  • python模块

  • python设计模式

  • python数据结构与算法

  • django

    • web基础

    • django框架脑图(!必看)

    • django简介
    • MVC及MTV设计模式
    • 搭建django项目环境
    • url路由
    • view视图
    • 模板语法
    • 模型ORM

      • 模型ORM简介
        • 链接资料
        • 1. 模型ORM简介
        • 2. 快速上手
          • 2.1 *配置*
          • 2.2 *定义模型类*
          • 2.3 迁移
          • a. 生成迁移文件
          • b. 同步到数据库中
      • 模型和字段(1)
      • 模型和字段(2)
      • 多对多中间表详解
      • 模型的继承
      • 模型的元数据Meta
      • ORM单表增删改查
      • ORM多表增删改查
      • ORM中的事务和锁
      • 验证器
    • 中间件
    • cookie,session
    • Form和modelform校验器、同源和跨域问题
    • 文件处理

    • django-websocket

    • django测试

    • django-项目

  • django-DRF

  • flask

  • 自己设计开源pip包

  • 自己设计开源项目

  • python小示例

  • python面试题

  • python
  • django
  • 模型ORM
YiZhang-You
2023-05-18
目录

模型ORM简介

# 链接资料

  1. 官方文档

    文档 (opens new window)

  2. 刘江

    模型和字段 (opens new window)

  3. 博客园-maple-shaw (opens new window)

    maple-shaw (opens new window)

# 1. 模型ORM简介

模型准确且唯一的描述了数据。它包含您储存的数据的重要字段和行为。一般来说,每一个模型都映射一张数据库表。

基础:

  • 每个模型都是一个 Python 的类,这些类继承 [django.db.models.Model](https://docs.djangoproject.com/zh-hans/4.1/ref/models/instances/#django.db.models.Model)
  • 模型类的每个属性都相当于一个数据库的字段。
  • 利用这些,Django 提供了一个自动生成访问数据库的 API;请参阅 执行查询 (opens new window)。

对应关系:

  • 类 --> 表
  • 对象 --> 数据行(记录)
  • 属性 --> 字段

# 2. 快速上手

# 2.1 配置

在settings.py中保存了数据库的连接配置信息,Django默认初始配置使用sqlite数据库。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
1
2
3
4
5
6
  1. 使用MySQL数据库首先需要安装驱动程序

    pip install PyMySQL
    
    1
  2. 在Django的工程同名子目录的__init__.py文件中添加如下语句

    from pymysql import install_as_MySQLdb
    
    install_as_MySQLdb()
    
    
    1
    2
    3
    4

    作用是让Django的ORM能以mysqldb的方式来调用PyMySQL。

  3. 修改DATABASES配置信息

    DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'NAME': SQL_DB_NAME,
                'HOST': SQL_DB_HOST,
                'PORT': SQL_DB_PORT,
                'USER': SQL_DB_USER,
                'PASSWORD': SQL_DB_PASSWORD,
                'OPTIONS': {
                    'init_command': f'ALTER DATABASE {SQL_DB_NAME} CHARACTER SET utf8 COLLATE utf8_bin',
                    'charset': 'utf8mb4'
                }
            }
        }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
  4. 在MySQL中创建数据库

    create database django_demo default charset=utf8;
    
    1

# 2.2 定义模型类

这个样例定义了一个 Person 模型,拥有 first_name 和 last_name:

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
3
4
5

first_name 和 last_name 是模型的 字段 (opens new window)。每个字段都被指定为一个类属性,并且每个属性映射为一个数据库列。

上面的 Person 模型会创建一个如下的数据库表:

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
2
3
4
5

# 2.3 迁移

将模型类同步到数据库中。

# a. 生成迁移文件

python manage.py makemigrations
1

# b. 同步到数据库中

python manage.py migrate
1
编辑 (opens new window)
模板语法
模型和字段(1)

← 模板语法 模型和字段(1)→

最近更新
01
配置yun源
05-24
02
linux-配置python虚拟环境
05-24
03
linux文件目录管理
05-24
更多文章>
Theme by Vdoing | Copyright © 2023-2023 yizhang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式