#!/usr/bin/env python3 """ 数据库迁移脚本:将 actual_delivery_date 和 actual_payment_date 字段从 DATE 改为 TIMESTAMP """ import asyncio import sys from pathlib import Path project_root = Path(__file__).parent sys.path.insert(0, str(project_root)) sys.path.insert(0, str(project_root / "src")) from sqlalchemy.ext.asyncio import create_async_engine from sqlalchemy import text from config.settings import settings async def migrate(): """执行数据库迁移""" if not settings.DATABASE_URL: print("错误:未配置数据库连接") return engine = create_async_engine( settings.DATABASE_URL, echo=True ) async with engine.begin() as conn: # 修改日期字段类型 alter_sql = """ ALTER TABLE sales_orders ALTER COLUMN actual_delivery_date TYPE TIMESTAMP, ALTER COLUMN actual_payment_date TYPE TIMESTAMP """ await conn.execute(text(alter_sql)) print("成功将实际交付和实际收款日期字段类型改为 TIMESTAMP") await engine.dispose() print("迁移完成") if __name__ == "__main__": asyncio.run(migrate())