主要功能: - 完整的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>
63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
"""添加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()
|