session.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from sqlalchemy import create_engine
  2. from sqlalchemy.orm import sessionmaker, scoped_session
  3. from .base_class import Base
  4. import os
  5. from pgvector.sqlalchemy import Vector
  6. # 数据库配置
  7. # 远程PostgreSQL数据库连接配置
  8. # 从环境变量获取数据库连接信息,如果未设置则使用默认值
  9. DB_HOST = os.getenv("DB_HOST", "173.18.12.203")
  10. DB_PORT = os.getenv("DB_PORT", "5432")
  11. DB_USER = os.getenv("DB_USER", "knowledge")
  12. DB_PASS = os.getenv("DB_PASSWORD", "qwer1234.")
  13. DB_NAME = os.getenv("DB_NAME", "medkg")
  14. DATABASE_URL = f"postgresql://{DB_USER}:{DB_PASS}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
  15. engine = create_engine(
  16. DATABASE_URL,
  17. pool_size=100,
  18. max_overflow=20,
  19. pool_pre_ping=True,
  20. connect_args={'options': '-c search_path=public'},
  21. echo=True # 开启SQL日志
  22. )
  23. SessionLocal = sessionmaker(
  24. autocommit=False,
  25. autoflush=False,
  26. bind=engine
  27. )
  28. session = scoped_session(SessionLocal)
  29. def get_db():
  30. db = SessionLocal()
  31. try:
  32. yield db
  33. finally:
  34. db.close()