74 lines
2.3 KiB
Python
74 lines
2.3 KiB
Python
"""迁移脚本:添加 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("迁移完成")
|