Files
djangoadmin-wiki/DjangoAdmin_Tornado_EleVue/zh/volume1/database.md
T
2026-09-16 10:11:44 +08:00

5.2 KiB
Raw Blame History

数据库初始化

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

项目支持 MySQL、PostgreSQL、SQL Server、SQLite、Oracle 等多种数据库,通过 .env 中的 DB_DRIVER 切换驱动。

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

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

方式一:手动初始化(推荐)

手动初始化是最直接、最可控的方式,适合开发环境和生产环境。

第一步:创建数据库

根据你使用的数据库类型,手动创建数据库。

MySQL:

CREATE DATABASE `djangoadmin.tornado.elevue`
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_general_ci;

PostgreSQL:

CREATE DATABASE "djangoadmin.tornado.elevue"
  WITH ENCODING 'UTF8'
  LC_COLLATE = 'zh_CN.UTF-8'
  LC_CTYPE = 'zh_CN.UTF-8';

SQL Server:

CREATE DATABASE [djangoadmin.tornado.elevue];

第二步:导入数据库脚本

MySQL 数据库脚本位于 document/ 目录下:

# 登录 MySQL
mysql -uroot -p

# 导入脚本
mysql -uroot -p djangoadmin.tornado.elevue < document/djangoadmin.tornado.elevue.sql

:::tip 温馨提示 document/djangoadmin.tornado.elevue.sql 是 MySQL 专用脚本。对于 PostgreSQL / SQL Server / SQLite / Oracle,建议使用 Alembic 方式初始化。 :::

第三步:导入字典种子数据

# 导入业务字典数据(性别、友链类型、通知来源等)
python scripts/seed_dict.py

:::tip 温馨提示 seed_dict.py 是幂等脚本,可重复执行不会产生重复数据。 :::

方式二:Alembic 迁移初始化

适合非 MySQL 数据库,或需要版本化管理数据库结构的场景。

第一步:创建数据库

同方式一的手动建库步骤。

第二步:执行迁移

# 根据 models 定义自动建表
poetry run alembic upgrade head

第三步:导入种子数据

python scripts/seed_dict.py

方式三:脚本初始化(备选)

# 自动完成建库、建表、导入种子数据
python scripts/init_db.py

:::tip 温馨提示 init_db.py 会根据 .env 中的 DB_DRIVER 配置自动初始化数据库。适合快速搭建开发环境。 :::

多数据库驱动配置

项目通过 DB_DRIVER 环境变量切换数据库驱动:

DB_DRIVER 别名 Python 驱动 安装方式
mysql — pymysql 默认已安装
postgresql postgres psycopg2-binary poetry install -E postgresql
mssql sqlserver pymssql poetry install -E mssql
sqlite sqlite3 sqlite3 内置,无需额外安装
oracle — oracledb poetry install -E oracle

SQLite 配置示例

# .env
DB_DRIVER=sqlite
DB_DATABASE=/path/to/djangoadmin.db

:::tip SQLite 说明 当 DB_DRIVER=sqlite 时,DB_DATABASE 为数据库文件的完整路径(相对或绝对路径),DB_HOST、DB_PORT、DB_USERNAME、DB_PASSWORD 均被忽略。 :::

PostgreSQL 配置示例

# .env
DB_DRIVER=postgresql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=djangoadmin.tornado.elevue
DB_USERNAME=postgres
DB_PASSWORD=your_password

Oracle 配置示例

# .env
DB_DRIVER=oracle
DB_HOST=127.0.0.1
DB_PORT=1521
DB_DATABASE=XEPDB1  # SERVICE_NAME
DB_USERNAME=system
DB_PASSWORD=your_password

初始化完成后

数据库初始化完成后,系统包含以下默认数据:

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

跨库数据迁移

项目提供 scripts/migrate_db.py 脚本,支持在不同数据库之间迁移数据(如 MySQL → PostgreSQL)。详细说明请参考 跨库数据迁移 章节。

常见问题

  • 数据库连接失败
1. 检查数据库服务是否已启动
2. 检查 .env 中的 DB_HOST、DB_PORT、DB_USERNAME、DB_PASSWORD 是否正确
3. 检查防火墙是否放行了数据库端口
4. 检查数据库用户是否有建库/建表权限
  • 导入脚本报错
1. 确认数据库字符集为 utf8mb4(MySQL)
2. 确认数据库版本符合要求(MySQL 8.0+)
3. 检查脚本文件是否完整(未被截断)
  • Alembic 迁移失败
1. 确认 alembic.ini 中的数据库连接配置正确
2. 检查是否存在版本冲突:poetry run alembic history
3. 如需重置:poetry run alembic downgrade base,然后 poetry run alembic upgrade head

总结

本章节介绍了三种数据库初始化方式:手动导入 SQL 脚本(推荐)、Alembic 迁移、脚本自动初始化。项目支持 MySQL / PostgreSQL / SQL Server / SQLite / Oracle 五种数据库,通过 DB_DRIVER 环境变量切换。初始化完成后即可启动后端服务。