83 lines
2.9 KiB
Python
83 lines
2.9 KiB
Python
|
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()
|