gisaf-backend/src/gisaf/database.py

33 lines
908 B
Python
Raw Normal View History

from contextlib import asynccontextmanager
2023-12-17 12:20:07 +05:30
from typing import Annotated, AsyncContextManager
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
2023-11-06 17:04:17 +05:30
echo = False
pg_url = "postgresql+asyncpg://avgis@localhost/avgis"
engine = create_async_engine(
pg_url,
echo=echo,
pool_size=conf.db.pool_size,
max_overflow=conf.db.max_overflow,
)
async def get_db_session() -> AsyncSession:
async with AsyncSession(engine) as session:
yield session
2023-11-06 17:04:17 +05:30
@asynccontextmanager
2023-12-17 12:20:07 +05:30
async def db_session() -> AsyncContextManager[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)]