baodan/api/insurance/db/migrate_002.py

77 lines
2.2 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.

"""迁移脚本 002创建角色表
使用方式:
python -m insurance.db.migrate_002
或在应用启动时自动执行(需要配置 MIGRATION_ENABLED=true
"""
from sqlalchemy import text
from insurance.db.compat import db
def migrate():
"""执行迁移:创建角色表。"""
print("[migrate_002] 开始执行迁移...")
try:
# 检查表是否已存在
result = db.session.execute(text("""
SELECT EXISTS (
SELECT FROM information_schema.tables
WHERE table_name = 'insurance_roles'
)
"""))
if result.scalar():
print("[migrate_002] 表已存在,跳过")
return True
# 创建角色表
print("[migrate_002] 创建 insurance_roles 表")
db.session.execute(text("""
CREATE TABLE insurance_roles (
id SERIAL PRIMARY KEY,
name VARCHAR(64) UNIQUE NOT NULL,
description VARCHAR(256) DEFAULT '',
permissions TEXT DEFAULT '[]',
builtin BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
"""))
# 添加注释
db.session.execute(text("""
COMMENT ON TABLE insurance_roles IS '系统角色表'
"""))
db.session.execute(text("""
COMMENT ON COLUMN insurance_roles.name IS '角色名称'
"""))
db.session.execute(text("""
COMMENT ON COLUMN insurance_roles.permissions IS '权限列表JSON'
"""))
db.session.execute(text("""
COMMENT ON COLUMN insurance_roles.builtin IS '是否内置角色'
"""))
db.session.commit()
print("[migrate_002] 迁移完成!")
return True
except Exception as e:
db.session.rollback()
print(f"[migrate_002] 迁移失败: {e}")
return False
if __name__ == "__main__":
from flask import Flask
from configs.app_config import AppConfig
app = Flask(__name__)
app.config.from_object(AppConfig)
with app.app_context():
migrate()