init_db.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. """
  2. 数据库初始化脚本
  3. """
  4. import os
  5. import sys
  6. import logging
  7. from datetime import datetime
  8. # 将项目根目录添加到Python路径
  9. sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
  10. from sqlalchemy.orm import Session
  11. from core.models import Base, User
  12. from core.database import engine, SessionLocal
  13. from core.auth import get_password_hash
  14. logging.basicConfig(level=logging.INFO)
  15. logger = logging.getLogger(__name__)
  16. def init_db():
  17. """初始化数据库"""
  18. # 创建所有表
  19. Base.metadata.create_all(bind=engine)
  20. # 创建数据库会话
  21. db = SessionLocal()
  22. try:
  23. # 检查是否已有用户
  24. user = db.query(User).first()
  25. if not user:
  26. # 创建默认用户
  27. default_user = User(
  28. username="admin",
  29. email="admin@example.com",
  30. hashed_password=get_password_hash("password"),
  31. institution="江西财经大学",
  32. position="学生",
  33. research_fields=["人工智能", "计算机视觉", "自然语言处理"],
  34. membership_type="高级研究版",
  35. expiry_date=datetime(2025, 12, 31),
  36. credits=5280
  37. )
  38. db.add(default_user)
  39. db.commit()
  40. logger.info("创建了默认用户")
  41. else:
  42. logger.info("数据库已初始化")
  43. finally:
  44. db.close()
  45. logger.info("数据库初始化完成")
  46. if __name__ == "__main__":
  47. logger.info("初始化数据库...")
  48. init_db()