签入版本
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
"""
|
||||
多数据库建表 + 种子数据脚本(方案 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()
|
||||
Reference in New Issue
Block a user