dashboard/backend/alter_table.py

83 lines
2.9 KiB
Python
Raw Normal View History

2025-06-09 14:59:40 +08:00
import sqlite3
import os
import logging
import json
# 设置日志
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
# 数据库路径
DB_DIR = "data"
DB_PATH = os.path.join(DB_DIR, "app.db")
def check_and_alter_table():
# 检查数据库文件是否存在
if not os.path.exists(DB_PATH):
logger.error(f"数据库文件 {DB_PATH} 不存在")
return
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
# 检查talents表是否存在idcode字段
cursor.execute("PRAGMA table_info(talents)")
columns = [column[1] for column in cursor.fetchall()]
if 'idcode' not in columns:
logger.info("talents表中添加idcode字段")
cursor.execute("ALTER TABLE talents ADD COLUMN idcode TEXT")
conn.commit()
else:
logger.info("talents表已包含idcode字段无需修改")
# 检查talents表是否存在educationBackground字段
if 'educationBackground' not in columns:
logger.info("talents表中添加educationBackground字段")
cursor.execute("ALTER TABLE talents ADD COLUMN educationBackground TEXT")
conn.commit()
else:
logger.info("talents表已包含educationBackground字段无需修改")
# 检查labs表是否存在idcode字段
cursor.execute("PRAGMA table_info(labs)")
labs_columns = [column[1] for column in cursor.fetchall()]
if 'idcode' not in labs_columns:
logger.info("labs表中添加idcode字段")
cursor.execute("ALTER TABLE labs ADD COLUMN idcode TEXT")
conn.commit()
else:
logger.info("labs表已包含idcode字段无需修改")
# 检查dimensions表是否存在sub_dimensions字段
cursor.execute("PRAGMA table_info(dimensions)")
columns = [column[1] for column in cursor.fetchall()]
if 'sub_dimensions' not in columns:
logger.info("dimensions表中添加sub_dimensions字段")
cursor.execute("ALTER TABLE dimensions ADD COLUMN sub_dimensions JSON")
conn.commit()
else:
logger.info("dimensions表已包含sub_dimensions字段无需修改")
# 检查dimensions表是否存在parent_id字段
if 'parent_id' not in columns:
logger.info("dimensions表中添加parent_id字段")
cursor.execute("ALTER TABLE dimensions ADD COLUMN parent_id INTEGER REFERENCES dimensions(id)")
conn.commit()
else:
logger.info("dimensions表已包含parent_id字段无需修改")
# 检查labs表是否存在sub_dimension_evaluations字段
if 'sub_dimension_evaluations' not in labs_columns:
logger.info("labs表中添加sub_dimension_evaluations字段")
cursor.execute("ALTER TABLE labs ADD COLUMN sub_dimension_evaluations TEXT")
conn.commit()
else:
logger.info("labs表已包含sub_dimension_evaluations字段无需修改")
conn.close()
if __name__ == "__main__":
check_and_alter_table()