Skip to content

Commit 8e81744

Browse files
committed
Changed to using create_engine
1 parent 752f511 commit 8e81744

File tree

1 file changed

+30
-19
lines changed

1 file changed

+30
-19
lines changed

application/db/session.py

+30-19
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,42 @@
1-
from functools import lru_cache
1+
from sqlalchemy import create_engine
2+
from sqlalchemy.orm import sessionmaker, Session
23
from typing import Iterator
3-
4-
from fastapi_utils.session import FastAPISessionMaker
5-
from sqlalchemy.orm import Session
6-
7-
from application.settings import get_settings
84
import logging
5+
from application.settings import get_settings
96

7+
# Set up logging
108
logger = logging.getLogger(__name__)
119

1210

13-
# this can be used in fast api path functions using Depends to inject a db session
14-
def get_session() -> Iterator[Session]:
11+
def _create_engine():
12+
settings = get_settings()
13+
engine = create_engine(
14+
settings.READ_DATABASE_URL,
15+
pool_size=settings.DB_POOL_SIZE,
16+
max_overflow=settings.DB_POOL_MAX_OVERFLOW,
17+
)
18+
1519
logger.info(
16-
f"Database engine created with pool_size={get_settings().DB_POOL_SIZE}, "
17-
f"max_overflow={get_settings().DB_POOL_MAX_OVERFLOW}"
20+
f"Engine created with pool_size={engine.pool.size()}, "
21+
f"max_overflow={engine.pool._max_overflow}, "
1822
)
19-
yield from _get_fastapi_sessionmaker().get_db()
2023

24+
return engine
25+
26+
27+
# Create session factory
28+
engine = _create_engine()
29+
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
2130

22-
# this can be used in non path functions to create a context manager for a db session
23-
# see https://github.com/dmontagu/fastapi-utils/blob/master/fastapi_utils/session.py#L77:L91
24-
def get_context_session() -> Iterator[Session]:
25-
return _get_fastapi_sessionmaker().context_session()
31+
32+
def get_session() -> Iterator[Session]:
33+
db = SessionLocal()
34+
try:
35+
yield db
36+
finally:
37+
db.close()
2638

2739

28-
@lru_cache()
29-
def _get_fastapi_sessionmaker() -> FastAPISessionMaker:
30-
database_uri = get_settings().READ_DATABASE_URL
31-
return FastAPISessionMaker(database_uri)
40+
def get_context_session() -> Iterator[Session]:
41+
with SessionLocal() as session:
42+
yield session

0 commit comments

Comments
 (0)