gisaf-backend/src/gisaf/database.py

31 lines
897 B
Python
Raw Normal View History

from contextlib import asynccontextmanager
2023-12-23 15:08:42 +05:30
from typing import Annotated
from collections.abc import AsyncGenerator
2023-11-06 17:04:17 +05:30
from sqlalchemy.ext.asyncio import create_async_engine
from sqlmodel.ext.asyncio.session import AsyncSession
from fastapi import Depends
2023-11-06 17:04:17 +05:30
import pandas as pd
from .config import conf
engine = create_async_engine(
2023-12-23 15:08:42 +05:30
conf.db.get_sqla_url(),
echo=conf.db.echo,
pool_size=conf.db.pool_size,
max_overflow=conf.db.max_overflow,
)
2023-12-23 15:08:42 +05:30
async def get_db_session() -> AsyncGenerator[AsyncSession]:
async with AsyncSession(engine) as session:
yield session
2023-11-06 17:04:17 +05:30
@asynccontextmanager
2023-12-23 15:08:42 +05:30
async def db_session() -> AsyncGenerator[AsyncSession]:
2023-11-06 17:04:17 +05:30
async with AsyncSession(engine) as session:
yield session
def pandas_query(session, query):
return pd.read_sql_query(query, session.connection())
fastapi_db_session = Annotated[AsyncSession, Depends(get_db_session)]