import os from pathlib import Path from dotenv import load_dotenv from sqlalchemy import create_engine load_dotenv(dotenv_path=Path(__file__).resolve().parent.parent / ".env") from sqlalchemy.orm import sessionmaker, declarative_base DATABASE_URL = os.environ.get("DATABASE_URL", "sqlite:///./test.db") # Relative SQLite-Pfade immer relativ zu dieser Datei auflösen, nicht zum cwd if DATABASE_URL.startswith("sqlite:///") and not DATABASE_URL.startswith("sqlite:////"): db_path = DATABASE_URL[len("sqlite:///"):] if not os.path.isabs(db_path): db_path = str(Path(__file__).resolve().parent / db_path) DATABASE_URL = f"sqlite:///{db_path}" if "sqlite" in DATABASE_URL: engine = create_engine(DATABASE_URL, connect_args={"check_same_thread": False}) else: engine = create_engine(DATABASE_URL) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base() def get_db(): db = SessionLocal() try: yield db finally: db.close()