feat(db): P2 摘除运行时种子 + 脚本化迁移/种子(migrate.py/seed.py)
- Database.initialize() 不再 create_all/seed_data:运行时仅做库连通检查(不建表不灌种子)。 - 新增 scripts/db/migrate.py(封装 alembic upgrade/downgrade)、scripts/db/seed.py(非运行态灌平台种子)。 - 新增 serverdata/seed/(README) 存放种子 JSON。 - 迁移/种子流程:uv run python scripts/db/migrate.py + scripts/db/seed.py,再启动应用。 - 已知待修:seed 内 AGENT_SEED 全局固定 id 唯一冲突(既有缺陷, 待 P2 后续修);pine/角色已能灌入。
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""数据库迁移脚本(非运行态)—— Alembic 封装。
|
||||
|
||||
用法:uv run python scripts/db/migrate.py # alembic upgrade head
|
||||
uv run python scripts/db/migrate.py downgrade # 回退一个版本
|
||||
在启动应用【之前】执行;禁止在应用启动时迁移/建表。
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent.parent
|
||||
os.chdir(ROOT)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
cmd = sys.argv[1] if len(sys.argv) > 1 else "upgrade"
|
||||
if cmd == "downgrade":
|
||||
args = ["python", "-m", "alembic", "downgrade", "-1"]
|
||||
else:
|
||||
args = ["python", "-m", "alembic", "upgrade", "head"]
|
||||
print(f"执行迁移: {' '.join(args)}")
|
||||
raise SystemExit(subprocess.call(args, cwd=str(ROOT)))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user