baodan/api/insurance/db/migrate_008.py

74 lines
2.3 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.

"""迁移脚本:添加 baodan_conversation_id 字段到会话表。"""
import logging
from insurance.db.compat import db
def migrate():
"""添加 baodan_conversation_id 字段到 insurance_chat_sessions 表。"""
try:
from sqlalchemy import inspect
# 检查字段是否已存在
inspector = inspect(db.engine)
columns = [col['name'] for col in inspector.get_columns('insurance_chat_sessions')]
if 'baodan_conversation_id' in columns:
logging.info("字段 baodan_conversation_id 已存在,跳过添加")
return
# 根据数据库方言执行不同的 SQL
dialect = db.engine.dialect.name
if dialect == 'sqlite':
# SQLite 不支持 COMMENT 语法
db.session.execute(
"ALTER TABLE insurance_chat_sessions "
"ADD COLUMN baodan_conversation_id VARCHAR(128)"
)
else:
# PostgreSQL
db.session.execute(
"ALTER TABLE insurance_chat_sessions "
"ADD COLUMN baodan_conversation_id VARCHAR(128) NULL "
"COMMENT 'BaoDan 返回的 conversation_id用于保持上下文'"
)
db.session.commit()
logging.info("成功添加 baodan_conversation_id 字段")
except Exception as e:
logging.error(f"添加字段失败: {e}")
db.session.rollback()
raise
def downgrade():
"""删除 baodan_conversation_id 字段。"""
try:
from sqlalchemy import inspect
inspector = inspect(db.engine)
columns = [col['name'] for col in inspector.get_columns('insurance_chat_sessions')]
if 'baodan_conversation_id' not in columns:
logging.info("字段 baodan_conversation_id 不存在,跳过删除")
return
db.session.execute(
"ALTER TABLE insurance_chat_sessions DROP COLUMN baodan_conversation_id"
)
db.session.commit()
logging.info("成功删除 baodan_conversation_id 字段")
except Exception as e:
logging.error(f"删除字段失败: {e}")
db.session.rollback()
raise
if __name__ == "__main__":
# 直接运行迁移
import sys
sys.path.insert(0, ".")
from app import app
with app.app_context():
migrate()
print("迁移完成")