mobile app database models admin_contests admin_dashboard admin_exams admin_posts admin_teacher_applications admin_users apply_contest apply_teacher base chat contest_detail contest_list exam_result forum notifications profile themes
This commit is contained in:
40
add_visibility_column.py
Normal file
40
add_visibility_column.py
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/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("完成!")
|
||||
Reference in New Issue
Block a user