| from app import settings as config |
| from sqlalchemy import create_engine |
| from sqlalchemy.ext.declarative import declarative_base |
| from sqlalchemy.orm import sessionmaker |
|
|
| DATABASE_USERNAME = config.DATABASE_USERNAME |
| DATABASE_PASSWORD = config.DATABASE_PASSWORD |
| DATABASE_HOST = config.DATABASE_HOST |
| DATABASE_NAME = config.DATABASE_NAME |
|
|
| SQLALCHEMY_DATABASE_URL = f"postgresql://{DATABASE_USERNAME}:{DATABASE_PASSWORD}@{DATABASE_HOST}/{DATABASE_NAME}" |
|
|
| engine = create_engine(SQLALCHEMY_DATABASE_URL) |
|
|
| SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) |
|
|
| Base = declarative_base() |
|
|
|
|
| def get_db(): |
| """ |
| Provides a database session for dependency injection. |
| |
| This function is used to obtain a new database session instance from the |
| `SessionLocal` factory. It is intended to be used with dependency injection |
| in FastAPI to manage database sessions. |
| |
| Yields: |
| Session: A SQLAlchemy database session. |
| |
| Notes: |
| The session is automatically closed after use to ensure proper resource management. |
| """ |
| db = SessionLocal() |
| try: |
| yield db |
| finally: |
| db.close() |
|
|