Files
zjpb.net/migrations/add_code_field.py
Jowe 9e47ebe749 release: v2.0 - 完整功能管理系统
主要功能:
- 完整的Flask-Admin后台管理系统
- 网站/标签/新闻管理功能
- 用户登录认证系统
- 科技感/未来风UI设计
- 标签分类系统(取代传统分类)
- 详情页面展示
- 数据库迁移脚本
- 书签导入解析工具

技术栈:
- Flask + SQLAlchemy
- Flask-Admin管理界面
- Bootstrap 4响应式设计
- 用户认证与权限管理

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 19:21:17 +08:00

63 lines
2.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""添加code字段的迁移脚本"""
import sys
import os
import random
# 添加项目根目录到系统路径
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from app import create_app
from models import db, Site
from sqlalchemy import text
# 创建应用上下文
app = create_app()
def generate_unique_code():
"""生成唯一的8位数字编码"""
while True:
# 生成10000000-99999999之间的随机数
code = str(random.randint(10000000, 99999999))
# 检查是否已存在
if not Site.query.filter_by(code=code).first():
return code
with app.app_context():
try:
print("Step 1: Adding code column to sites table...")
# 添加code列先允许为空
with db.engine.connect() as connection:
connection.execute(text('ALTER TABLE sites ADD COLUMN code VARCHAR(8) NULL COMMENT "8位数字编码"'))
connection.commit()
print(" - Column added successfully!")
print("\nStep 2: Generating codes for existing sites...")
# 为现有网站生成code
sites = Site.query.all()
for site in sites:
site.code = generate_unique_code()
print(f" - Site #{site.id} '{site.name}': code = {site.code}")
db.session.commit()
print(f" - Generated codes for {len(sites)} sites!")
print("\nStep 3: Making code column NOT NULL and UNIQUE...")
# 现在修改列为NOT NULL和UNIQUE
with db.engine.connect() as connection:
connection.execute(text('ALTER TABLE sites MODIFY COLUMN code VARCHAR(8) NOT NULL'))
connection.execute(text('ALTER TABLE sites ADD UNIQUE INDEX idx_site_code (code)'))
connection.commit()
print(" - Code column constraints added!")
print("\n✓ Migration completed successfully!")
except Exception as e:
print(f"\n✗ Migration failed: {str(e)}")
import traceback
traceback.print_exc()
db.session.rollback()