db.py 915 B

123456789101112131415161718192021222324252627282930313233343536
  1. from sqlalchemy import create_engine
  2. from sqlalchemy.orm import sessionmaker, declarative_base
  3. from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
  4. import os
  5. from dotenv import load_dotenv
  6. # 加载环境变量
  7. load_dotenv()
  8. # 数据库连接配置
  9. DATABASE_URL = os.getenv(
  10. "DATABASE_URL",
  11. "mysql+pymysql://wqsd:wqsd@2025@rm-bp13g3ra2f59q49xs.mysql.rds.aliyuncs.com:3306/ai_knowledge?charset=utf8&connect_timeout=30&read_timeout=30&write_timeout=30"
  12. )
  13. # 创建同步引擎和会话
  14. engine = create_engine(
  15. DATABASE_URL,
  16. pool_size=10,
  17. max_overflow=20,
  18. pool_timeout=30,
  19. echo=False # 设为True可查看SQL日志
  20. )
  21. SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
  22. # 声明基类
  23. Base = declarative_base()
  24. # 获取数据库会话的依赖函数
  25. def get_db():
  26. db = SessionLocal()
  27. try:
  28. yield db
  29. finally:
  30. db.close()