# db/database.py from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker # Usamos SQLite, que guarda la base de datos en un fichero local "app.db". SQLALCHEMY_DATABASE_URL = "sqlite:///./app.db" # El engine es el punto de entrada a la base de datos. # connect_args es necesario solo para SQLite para permitir que se use en múltiples hilos (como lo hace FastAPI). engine = create_engine( SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False} ) # Cada instancia de SessionLocal será una sesión de base de datos. SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) # Base será la clase de la que heredarán nuestros modelos de SQLAlchemy (como la clase User en models.py). Base = declarative_base() # --- Función de dependencia para los endpoints --- def get_db(): """ Dependencia de FastAPI que crea y gestiona una sesión de BD por cada request. """ db = SessionLocal() try: yield db finally: db.close()