初始化
This commit is contained in:
59
backend/init_db.py
Normal file
59
backend/init_db.py
Normal file
@@ -0,0 +1,59 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""数据库初始化 — 建表 + 插入默认数据"""
|
||||
import sys
|
||||
sys.stdout.reconfigure(encoding='utf-8')
|
||||
|
||||
from models import engine, Base, SessionLocal, Folder
|
||||
|
||||
|
||||
def migrate():
|
||||
"""数据库迁移 — 处理表结构变更"""
|
||||
from sqlalchemy import text
|
||||
with engine.connect() as conn:
|
||||
# V2.2: uploads 表新增 file_id 列,data 改为可空
|
||||
try:
|
||||
conn.execute(text("ALTER TABLE uploads ADD COLUMN file_id VARCHAR(64) NULL AFTER content_type"))
|
||||
except Exception:
|
||||
pass # 列已存在则跳过
|
||||
try:
|
||||
conn.execute(text("ALTER TABLE uploads MODIFY COLUMN data LONGBLOB NULL"))
|
||||
except Exception:
|
||||
pass
|
||||
conn.commit()
|
||||
print("[OK] 数据库迁移完成")
|
||||
|
||||
|
||||
def init_database():
|
||||
"""创建所有表,并插入默认文件夹"""
|
||||
# 建表
|
||||
Base.metadata.create_all(bind=engine)
|
||||
print("[OK] 数据库表创建完成")
|
||||
|
||||
# 执行迁移
|
||||
migrate()
|
||||
|
||||
# 插入默认数据
|
||||
db = SessionLocal()
|
||||
try:
|
||||
# 笔记默认文件夹
|
||||
if db.query(Folder).filter_by(type="note").count() == 0:
|
||||
for name in ["工作", "个人", "学习"]:
|
||||
db.add(Folder(name=name, type="note"))
|
||||
db.add(Folder(name="未分类", type="note"))
|
||||
print("[OK] 笔记文件夹已创建: 工作、个人、学习、未分类")
|
||||
|
||||
# 网站默认文件夹
|
||||
if db.query(Folder).filter_by(type="website").count() == 0:
|
||||
for name in ["代码托管", "云服务", "开发工具"]:
|
||||
db.add(Folder(name=name, type="website"))
|
||||
db.add(Folder(name="未分类", type="website"))
|
||||
print("[OK] 网站文件夹已创建: 代码托管、云服务、开发工具、未分类")
|
||||
|
||||
db.commit()
|
||||
print("[OK] 默认数据插入完成")
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
init_database()
|
||||
Reference in New Issue
Block a user