baodan/scripts/setup/run_migration.py
2026-07-23 08:52:59 +08:00

58 lines
2.0 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.

"""使用 Flask 应用执行数据库迁移(兼容 SQLite 和 PostgreSQL"""
import sys
import os
# 添加项目根目录到 Python 路径
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'api'))
from insurance.app import app
from insurance.db.compat import db
def add_column():
"""添加 baodan_conversation_id 字段。"""
with app.app_context():
try:
from sqlalchemy import text, inspect
# 获取数据库方言
dialect = db.engine.dialect.name
print(f"数据库方言: {dialect}")
# 检查字段是否已存在
inspector = inspect(db.engine)
columns = [col['name'] for col in inspector.get_columns('insurance_chat_sessions')]
if 'baodan_conversation_id' in columns:
print("字段 baodan_conversation_id 已存在,跳过添加")
return
# 根据数据库类型执行不同的 SQL
if dialect == 'sqlite':
# SQLite 使用 ALTER TABLE ADD COLUMN
db.session.execute(text(
"ALTER TABLE insurance_chat_sessions "
"ADD COLUMN baodan_conversation_id VARCHAR(128)"
))
else:
# PostgreSQL 使用 ALTER TABLE ADD COLUMN
db.session.execute(text(
"ALTER TABLE insurance_chat_sessions "
"ADD COLUMN baodan_conversation_id VARCHAR(128) NULL"
))
db.session.commit()
print("成功添加 baodan_conversation_id 字段")
# 验证字段已添加
inspector = inspect(db.engine)
columns = [col['name'] for col in inspector.get_columns('insurance_chat_sessions')]
if 'baodan_conversation_id' in columns:
print("验证成功: 字段已添加到数据库")
except Exception as e:
print(f"添加字段失败: {e}")
db.session.rollback()
raise
if __name__ == "__main__":
add_column()