#!/usr/bin/env python3 """ 将 projects 表中「质保期截止日」「中标合同金额」「工程款拨付方式」改为字符串类型。 用法:cd backend && PYTHONPATH=src python3 scripts/migrate_string_columns.py """ import sys from pathlib import Path _backend = Path(__file__).resolve().parent.parent if str(_backend) not in sys.path: sys.path.insert(0, str(_backend)) from src.database import get_connection def main(): with get_connection() as conn: cur = conn.cursor() try: cur.execute( "ALTER TABLE projects " "MODIFY COLUMN bid_contract_amount varchar(512) DEFAULT NULL COMMENT '中标合同金额(万元,字符串存储)', " "MODIFY COLUMN warranty_end_date varchar(256) DEFAULT NULL COMMENT '质保期截止日(字符串存储)', " "MODIFY COLUMN payment_method varchar(2048) DEFAULT NULL COMMENT '工程款拨付方式', " "MODIFY COLUMN is_adjusted varchar(512) DEFAULT NULL COMMENT '是否调整:是/否'" ) conn.commit() print("已将 bid_contract_amount、warranty_end_date、payment_method、is_adjusted 改为目标类型/长度。") except Exception as e: print(f"迁移失败: {e}") raise finally: cur.close() if __name__ == "__main__": main()