41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
添加 exam.visibility 字段的数据库迁移脚本
|
|
"""
|
|
|
|
from app import app, db
|
|
from models import Exam
|
|
|
|
def add_visibility_column():
|
|
"""为 Exam 表添加 visibility 字段"""
|
|
with app.app_context():
|
|
try:
|
|
# 检查字段是否已存在
|
|
inspector = db.inspect(db.engine)
|
|
columns = [col['name'] for col in inspector.get_columns('exam')]
|
|
|
|
if 'visibility' in columns:
|
|
print("visibility 字段已存在,无需添加")
|
|
return
|
|
|
|
# 添加字段
|
|
with db.engine.connect() as conn:
|
|
conn.execute(db.text("ALTER TABLE exam ADD COLUMN visibility VARCHAR(20) DEFAULT 'private'"))
|
|
conn.commit()
|
|
print("成功添加 visibility 字段")
|
|
|
|
# 将所有现有考试设置为公开(保持向后兼容)
|
|
conn.execute(db.text("UPDATE exam SET visibility = 'public' WHERE visibility IS NULL"))
|
|
conn.commit()
|
|
print("已将现有考试设置为公开")
|
|
|
|
except Exception as e:
|
|
print(f"添加字段时出错: {e}")
|
|
raise
|
|
|
|
if __name__ == '__main__':
|
|
print("开始添加 visibility 字段...")
|
|
add_visibility_column()
|
|
print("完成!")
|