from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, scoped_session from .base_class import Base import os from pgvector.sqlalchemy import Vector # 数据库配置 # 远程PostgreSQL数据库连接配置 # 从环境变量获取数据库连接信息,如果未设置则使用默认值 DB_HOST = os.getenv("DB_HOST", "173.18.12.203") DB_PORT = os.getenv("DB_PORT", "5432") DB_USER = os.getenv("DB_USER", "knowledge") DB_PASS = os.getenv("DB_PASSWORD", "qwer1234.") DB_NAME = os.getenv("DB_NAME", "postgres") DATABASE_URL = f"postgresql://{DB_USER}:{DB_PASS}@{DB_HOST}:{DB_PORT}/{DB_NAME}" engine = create_engine( DATABASE_URL, pool_size=20, max_overflow=10, pool_pre_ping=True, connect_args={'options': '-c search_path=public'}, echo=True # 开启SQL日志 ) SessionLocal = sessionmaker( autocommit=False, autoflush=False, bind=engine ) session = scoped_session(SessionLocal) def get_db(): db = SessionLocal() try: yield db finally: db.close()