3rd
This commit is contained in:
80
migrate_add_email_column.py
Normal file
80
migrate_add_email_column.py
Normal file
@@ -0,0 +1,80 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
資料庫遷移腳本:新增 notification_emails 欄位到 ts_temp_spec 表
|
||||
執行方式:python migrate_add_email_column.py
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
from sqlalchemy import create_engine, text
|
||||
from config import Config
|
||||
|
||||
def migrate_database():
|
||||
"""執行資料庫遷移,新增 notification_emails 欄位"""
|
||||
|
||||
# 使用 config.py 中的資料庫配置
|
||||
engine = create_engine(Config.SQLALCHEMY_DATABASE_URI)
|
||||
|
||||
try:
|
||||
with engine.connect() as conn:
|
||||
# 檢查欄位是否已存在
|
||||
result = conn.execute(text("""
|
||||
SELECT COLUMN_NAME
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_NAME = 'ts_temp_spec'
|
||||
AND COLUMN_NAME = 'notification_emails'
|
||||
AND TABLE_SCHEMA = DATABASE()
|
||||
"""))
|
||||
|
||||
if result.fetchone():
|
||||
print("✓ notification_emails 欄位已存在,無需遷移")
|
||||
return True
|
||||
|
||||
# 新增欄位
|
||||
print("正在新增 notification_emails 欄位到 ts_temp_spec 表...")
|
||||
conn.execute(text("""
|
||||
ALTER TABLE ts_temp_spec
|
||||
ADD COLUMN notification_emails TEXT DEFAULT NULL
|
||||
COMMENT '通知郵件清單,以分號分隔'
|
||||
"""))
|
||||
conn.commit()
|
||||
|
||||
print("✓ 成功新增 notification_emails 欄位")
|
||||
|
||||
# 驗證欄位是否成功新增
|
||||
result = conn.execute(text("""
|
||||
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_NAME = 'ts_temp_spec'
|
||||
AND COLUMN_NAME = 'notification_emails'
|
||||
AND TABLE_SCHEMA = DATABASE()
|
||||
"""))
|
||||
|
||||
column_info = result.fetchone()
|
||||
if column_info:
|
||||
print(f"✓ 欄位資訊:")
|
||||
print(f" - 欄位名稱:{column_info[0]}")
|
||||
print(f" - 資料類型:{column_info[1]}")
|
||||
print(f" - 可否為空:{column_info[2]}")
|
||||
return True
|
||||
else:
|
||||
print("✗ 欄位新增後無法驗證")
|
||||
return False
|
||||
|
||||
except Exception as e:
|
||||
print(f"✗ 遷移失敗:{str(e)}")
|
||||
return False
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("=" * 50)
|
||||
print("資料庫遷移腳本")
|
||||
print("=" * 50)
|
||||
|
||||
success = migrate_database()
|
||||
|
||||
if success:
|
||||
print("\n✓ 資料庫遷移完成!")
|
||||
print(" 現在可以使用新的郵件通知功能了。")
|
||||
else:
|
||||
print("\n✗ 資料庫遷移失敗,請檢查錯誤訊息。")
|
||||
sys.exit(1)
|
Reference in New Issue
Block a user