Files
DjangoAdmin_Flask_AntdVue/scripts/setup_db.py
T
2026-09-12 19:09:28 +08:00

58 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
多数据库建表 + 种子数据脚本(方案 A)
=============================================================
在任何受支持的数据库(mysql/pgsql/mssql/sqlite/oracle)上初始化系统:
1. 按 .env 的 DB_DRIVER 连接目标库
2. db.create_all() 建全部表(方言中立,各库通用)
3. 写入种子数据(admin 超管、角色、基础菜单/字典/配置)
用法:
# 切换数据库只需改 .env(DB_DRIVER + 账号),然后执行:
python scripts/setup_db.py
# 仅补种子(表已存在)
python -c "from scripts.setup_db import seed_only; seed_only()"
"""
import logging
import os
import sys
# 将项目根加入 sys.path(脚本以 `python scripts/xxx.py` 运行时 cwd 是 scripts/)
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if ROOT not in sys.path:
sys.path.insert(0, ROOT)
from src.app import create_app # noqa: E402
from src.core.database import db # noqa: E402
from config import DatabaseConfig, friendly_db_error # noqa: E402
logging.basicConfig(level=logging.INFO, format="%(levelname)s %(name)s: %(message)s")
def setup_database():
"""建表 + 种子(连接失败时给出友好中文提示)"""
app = create_app()
print(f"目标数据库: {DatabaseConfig.SQLALCHEMY_DATABASE_URI}")
try:
with app.app_context():
db.create_all()
print("已建表(create_all)")
from scripts.seed_data import seed_all
seed_all()
except Exception as e:
raise SystemExit(f"建表/初始化失败:{friendly_db_error(e)}")
def seed_only():
"""仅补种子数据(表已存在时)"""
app = create_app()
with app.app_context():
from scripts.seed_data import seed_all
seed_all()
if __name__ == "__main__":
setup_database()