Files
djangoadmin-wiki/DjangoAdmin_Django_EleVue/zh/volume1/database.md
T
2026-09-12 23:12:15 +08:00

7.9 KiB
Raw Blame History

数据库初始化

本章节介绍如何初始化项目数据库,包括建库、建表、导入种子数据以及后续的数据库迁移管理。

项目使用 Django 的 ORM 框架管理数据库,支持 MySQL、PostgreSQL、SQL Server、SQLite、Oracle 等数据库。

:::tip 温馨提示 数据库初始化前,请确保已完成以下准备工作:

  1. 目标数据库服务已启动(如 MySQL 8.0+)
  2. .env 文件中的 DATABASE_ENGINE 和数据库连接信息已正确配置
  3. Python 依赖已安装(pip install -r requirements.txt) :::

第一步:创建数据库

在 MySQL 提示符中创建项目数据库:

-- 创建数据库(UTF-8 编码)
CREATE DATABASE `djangoadmin.django.elevue`
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_general_ci;

-- 查看数据库
SHOW DATABASES;

:::tip 温馨提示 数据库名称需要与 .env 文件中的 DATABASE_NAME 配置一致,默认为 djangoadmin.django.elevue。 :::

第二步:配置数据库连接

确保 .env 文件中的数据库配置正确:

# ============================================================
# 数据库配置
# ============================================================
DATABASE_ENGINE="django.db.backends.mysql"   # 数据库引擎
DATABASE_NAME='djangoadmin.django.elevue'    # 数据库名称
DATABASE_HOST="127.0.0.1"                   # 数据库地址
DATABASE_PORT=3306                           # 数据库端口
DATABASE_USER="root"                         # 数据库用户名
DATABASE_PASSWORD="root"                     # 数据库密码(请修改为实际密码)
DATABASE_PREFIX="django_"                    # 数据表前缀

:::tip 多数据库支持 DATABASE_ENGINE 支持以下数据库引擎:

数据库 ENGINE 值 默认端口 依赖包
MySQL django.db.backends.mysql 3306 mysqlclient
PostgreSQL django.db.backends.postgresql 5432 psycopg2-binary
SQLite django.db.backends.sqlite3 - 内置
Oracle django.db.backends.oracle 1521 cx-Oracle
SQL Server mssql 1433 mssql-django

切换数据库引擎后,需安装对应的 Python 驱动包。例如切换到 PostgreSQL:

pip install psycopg2-binary

然后修改 .env 中的 DATABASE_ENGINE 和相关配置即可。 :::

第三步:执行数据库迁移

项目使用 Django 的迁移系统管理数据库结构。执行以下命令创建数据表:

# 为所有应用生成迁移文件
python manage.py makemigrations

# 执行所有迁移,创建数据表
python manage.py migrate
  • 迁移命令详解
# 为指定应用生成迁移文件
python manage.py makemigrations application.user
python manage.py makemigrations application.role

# 查看迁移状态
python manage.py showmigrations

# 查看某个迁移的 SQL 语句(不实际执行)
python manage.py sqlmigrate application.user 0001

# 回退迁移(撤销到指定迁移)
python manage.py migrate application.user 0001

:::tip 温馨提示 makemigrations 会根据 models.py 中的模型定义自动生成迁移文件,存放在各应用的 migrations/ 目录下。migrate 会执行迁移文件创建或修改数据表结构。 :::

第四步:导入初始数据

数据库初始数据(管理员账号、默认角色、菜单权限等)通过 SQL 脚本导入:

# 使用 mysql 命令行导入
mysql -uroot -p djangoadmin.django.elevue < document/mysql/djangoadmin.django.elevue.sql

# 或使用 Navicat 等工具:右键数据库 → 运行 SQL 文件

:::tip 种子数据说明 初始化完成后,数据库中包含以下默认数据:

数据 说明
管理员账号 admin / 123456(超级管理员,ID=1,跳过权限校验)
默认角色 超级管理员角色
默认菜单 系统管理、内容管理、监控管理等菜单及权限节点
数据字典 系统内置字典数据
系统配置 系统默认配置项
:::

第五步:回填数据库字段注释(可选)

项目提供了自定义管理命令,用于为数据库表和字段添加中文注释:

# 为所有数据表添加字段注释
python manage.py add_full_comments

:::tip 温馨提示 此命令会读取 Django 模型中的 verbose_name 和 help_text 属性,将其写入数据库的字段注释中,便于使用 Navicat 等工具查看表结构时理解每个字段的含义。 :::

第六步:验证

启动后端服务,验证数据库连接是否正常:

python manage.py runserver

如果启动过程中没有数据库连接错误,说明数据库初始化成功。

  • 使用 Django Shell 验证
# 进入 Django Shell
python manage.py shell

# 测试数据库查询
>>> from application.user.models import User
>>> User.objects.count()
1
>>> User.objects.first().username
'admin'

数据库迁移管理

项目使用 Django 内置的迁移系统管理数据库版本,确保数据库结构与代码模型保持同步。

  • 迁移文件位置
application/
├── user/
│   ├── migrations/
│   │   ├── __init__.py
│   │   └── 0001_initial.py    # 初始迁移
│   └── models.py
├── role/
│   ├── migrations/
│   │   ├── __init__.py
│   │   └── 0001_initial.py
│   └── models.py
└── ...
  • 生成增量迁移

当修改了模型(如新增字段、修改表结构)后,需要生成增量迁移文件:

# 自动生成迁移脚本(Django 会对比当前模型与数据库的差异)
python manage.py makemigrations

# 查看迁移文件内容
python manage.py sqlmigrate application.user 0002
  • 执行迁移
# 应用所有待执行的迁移
python manage.py migrate

:::tip 迁移工作流 典型的数据库迁移工作流如下:

1. 修改模型(application/<module>/models.py)
2. 生成迁移脚本:python manage.py makemigrations
3. 检查生成的迁移文件(application/<module>/migrations/ 目录)
4. 执行迁移:python manage.py migrate
5. 验证数据库结构变更

:::

代码生成器与数据库

项目提供了代码生成器,可以根据数据库表定义自动生成完整的 CRUD 模块:

# 从数据库表生成模块(解析表结构 → 生成配置 → 生成代码 → 自动迁移)
python generator.py django_<table_name>

# 仅查看配置,不生成代码
python generator.py django_<table_name> --dry-run

# 从已有配置文件生成代码
python generator.py --config config.json

:::tip 温馨提示 代码生成器会自动执行 makemigrations 和 migrate,创建对应的数据表。生成的代码包括 Django 模型、表单、服务、视图、路由以及前端 Vue 页面。 :::

数据库备份与恢复

  • MySQL 备份
# 备份数据库
mysqldump -uroot -p djangoadmin.django.elevue > backup.sql

# 恢复数据库
mysql -uroot -p djangoadmin.django.elevue < backup.sql
  • PostgreSQL 备份
# 备份数据库
pg_dump -U postgres djangoadmin.django.elevue > backup.sql

# 恢复数据库
psql -U postgres djangoadmin.django.elevue < backup.sql
  • SQLite 备份
# 备份数据库(直接复制文件)
cp db.sqlite3 db_backup.sqlite3

# 恢复数据库(替换文件)
cp db_backup.sqlite3 db.sqlite3

总结

数据库初始化的核心步骤:

1. 创建数据库:CREATE DATABASE `djangoadmin.django.elevue`
2. 配置 .env:设置 DATABASE_ENGINE、DATABASE_NAME 等连接信息
3. 执行迁移:python manage.py makemigrations && python manage.py migrate
4. 导入初始数据:mysql ... < document/mysql/djangoadmin.django.elevue.sql
5. 回填注释(可选):python manage.py add_full_comments

后续的模型变更通过 Django 迁移系统管理(makemigrations + migrate),确保数据库结构与代码保持同步。如需使用代码生成器创建新模块,生成器会自动处理数据库迁移。