Files
zjpb.net/migrations/add_is_recommended.py

73 lines
2.2 KiB
Python
Raw Normal View History

"""
数据库迁移脚本: 为sites表添加is_recommended字段
执行方法: python migrations/add_is_recommended.py
"""
import os
import sys
# 添加项目根目录到sys.path
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from app import create_app
from models import db
def upgrade():
"""添加is_recommended字段"""
app = create_app(os.getenv('FLASK_ENV', 'development'))
with app.app_context():
try:
# 检查字段是否已存在
result = db.session.execute(db.text(
"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS "
"WHERE TABLE_NAME = 'sites' AND COLUMN_NAME = 'is_recommended'"
))
if result.fetchone():
print("字段 is_recommended 已存在,跳过迁移")
return
# 添加字段
print("开始添加 is_recommended 字段...")
db.session.execute(db.text(
"ALTER TABLE sites ADD COLUMN is_recommended TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否推荐'"
))
db.session.commit()
print("[OK] 成功添加 is_recommended 字段")
except Exception as e:
db.session.rollback()
print(f"[ERROR] 迁移失败: {str(e)}")
sys.exit(1)
def downgrade():
"""删除is_recommended字段"""
app = create_app(os.getenv('FLASK_ENV', 'development'))
with app.app_context():
try:
# 删除字段
print("开始删除 is_recommended 字段...")
db.session.execute(db.text(
"ALTER TABLE sites DROP COLUMN is_recommended"
))
db.session.commit()
print("✓ 成功删除 is_recommended 字段")
except Exception as e:
db.session.rollback()
print(f"✗ 回滚失败: {str(e)}")
sys.exit(1)
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser(description='数据库迁移: 添加is_recommended字段')
parser.add_argument('--downgrade', action='store_true', help='回滚迁移')
args = parser.parse_args()
if args.downgrade:
downgrade()
else:
upgrade()