# 数据库初始化 本章节介绍如何初始化项目数据库,包括建库、建表、导入种子数据以及后续的数据库迁移管理。 项目使用 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` 提示符中创建项目数据库: ```sql -- 创建数据库(UTF-8 编码) CREATE DATABASE `djangoadmin.django.antdvue` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- 查看数据库 SHOW DATABASES; ``` :::tip 温馨提示 数据库名称需要与 `.env` 文件中的 `DATABASE_NAME` 配置一致,默认为 `djangoadmin.django.antdvue`。 ::: ## 第二步:配置数据库连接 确保 `.env` 文件中的数据库配置正确: ```bash # ============================================================ # 数据库配置 # ============================================================ DATABASE_ENGINE="django.db.backends.mysql" # 数据库引擎 DATABASE_NAME='djangoadmin.django.antdvue' # 数据库名称 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 | oracledb | | SQL Server | `mssql` | 1433 | mssql-django | 切换数据库引擎后,需安装对应的 Python 驱动包。例如切换到 PostgreSQL: ```bash pip install psycopg2-binary ``` 然后修改 `.env` 中的 `DATABASE_ENGINE` 和相关配置即可。 ::: ## 第三步:执行数据库迁移 项目使用 Django 的迁移系统管理数据库结构。执行以下命令创建数据表: ```bash # 为所有应用生成迁移文件 python manage.py makemigrations # 执行所有迁移,创建数据表 python manage.py migrate ``` + 迁移命令详解 ```bash # 为指定应用生成迁移文件 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 脚本导入: ```bash # 使用 mysql 命令行导入 mysql -uroot -p djangoadmin.django.antdvue < document/mysql/djangoadmin.django.antdvue.sql # 或使用 Navicat 等工具:右键数据库 → 运行 SQL 文件 ``` :::tip 种子数据说明 初始化完成后,数据库中包含以下默认数据: | 数据 | 说明 | |:----|:----| | 管理员账号 | `admin` / `123456`(超级管理员,ID=1,跳过权限校验) | | 默认角色 | 超级管理员角色 | | 默认菜单 | 系统管理、内容管理、监控管理等菜单及权限节点 | | 数据字典 | 系统内置字典数据 | | 系统配置 | 系统默认配置项 | ::: ## 第五步:验证 启动后端服务,验证数据库连接是否正常: ```bash python manage.py runserver ``` 如果启动过程中没有数据库连接错误,说明数据库初始化成功。 + 使用 Django Shell 验证 ```bash # 进入 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 └── ... ``` + 生成增量迁移 当修改了模型(如新增字段、修改表结构)后,需要生成增量迁移文件: ```bash # 自动生成迁移脚本(Django 会对比当前模型与数据库的差异) python manage.py makemigrations # 查看迁移文件内容 python manage.py sqlmigrate application.user 0002 ``` + 执行迁移 ```bash # 应用所有待执行的迁移 python manage.py migrate ``` :::tip 迁移工作流 典型的数据库迁移工作流如下: ``` 1. 修改模型(application//models.py) 2. 生成迁移脚本:python manage.py makemigrations 3. 检查生成的迁移文件(application//migrations/ 目录) 4. 执行迁移:python manage.py migrate 5. 验证数据库结构变更 ``` ::: ## 代码生成器与数据库 项目提供了代码生成器,可以根据数据库表定义自动生成完整的 CRUD 模块: ```bash # 从数据库表生成模块(解析表结构 → 生成配置 → 生成代码 → 自动迁移) python generator.py django_ # 仅查看配置,不生成代码 python generator.py django_ --dry-run # 从已有配置文件生成代码 python generator.py --config config.json ``` :::tip 温馨提示 代码生成器会自动执行 `makemigrations` 和 `migrate`,创建对应的数据表。生成的代码包括 Django 模型、表单、服务、视图、路由以及前端 Vue 页面。 ::: ## 数据库备份与恢复 + MySQL 备份 ```bash # 备份数据库 mysqldump -uroot -p djangoadmin.django.antdvue > backup.sql # 恢复数据库 mysql -uroot -p djangoadmin.django.antdvue < backup.sql ``` + PostgreSQL 备份 ```bash # 备份数据库 pg_dump -U postgres djangoadmin.django.antdvue > backup.sql # 恢复数据库 psql -U postgres djangoadmin.django.antdvue < backup.sql ``` + SQLite 备份 ```bash # 备份数据库(直接复制文件) cp db.sqlite3 db_backup.sqlite3 # 恢复数据库(替换文件) cp db_backup.sqlite3 db.sqlite3 ``` ## 总结 数据库初始化的核心步骤: ``` 1. 创建数据库:CREATE DATABASE `djangoadmin.django.antdvue` 2. 配置 .env:设置 DATABASE_ENGINE、DATABASE_NAME 等连接信息 3. 执行迁移:python manage.py makemigrations && python manage.py migrate 4. 导入初始数据:mysql ... < document/mysql/djangoadmin.django.antdvue.sql ``` 后续的模型变更通过 Django 迁移系统管理(`makemigrations` + `migrate`),确保数据库结构与代码保持同步。如需使用代码生成器创建新模块,生成器会自动处理数据库迁移。