Files
zjpb.net/migrations/add_is_recommended.py
Jowe 8011e5bd4a feat: 实现最新/热门/推荐标签功能
- 移除顶部热门工具排行榜模块
- 在标签下方添加三个tab(最新/热门/推荐)
- 添加is_recommended字段到Site模型
- 创建数据库迁移脚本add_is_recommended.py
- 更新后台管理界面支持推荐标记
- 更新分页链接保持tab状态
- 所有功能已本地测试验证通过

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-04 00:59:37 +08:00

73 lines
2.2 KiB
Python

"""
数据库迁移脚本: 为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()