session.py 1.1 KB

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