diff options
Diffstat (limited to 'db/session.py')
| -rw-r--r-- | db/session.py | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/db/session.py b/db/session.py index 82c0211..48ef3b6 100644 --- a/db/session.py +++ b/db/session.py | |||
| @@ -1,21 +1,28 @@ | |||
| 1 | from contextlib import contextmanager | 1 | from contextlib import contextmanager |
| 2 | 2 | ||
| 3 | from sqlalchemy.orm import sessionmaker, scoped_session | 3 | from sqlalchemy.orm import scoped_session, sessionmaker |
| 4 | from sqlmodel import create_engine | 4 | from sqlmodel import Session, create_engine |
| 5 | from sqlmodel import Session | ||
| 6 | 5 | ||
| 7 | from conf import DATABASE_URL | 6 | from conf import DATABASE_URL |
| 8 | from utils.json import json_serializer | 7 | from utils.json import json_serializer |
| 9 | 8 | ||
| 10 | 9 | engine = create_engine( | |
| 11 | engine = create_engine(DATABASE_URL, echo=True, future=True, json_serializer=json_serializer, pool_size=100, pool_recycle=3600) | 10 | DATABASE_URL, |
| 11 | echo=True, | ||
| 12 | future=True, | ||
| 13 | json_serializer=json_serializer, | ||
| 14 | pool_size=100, | ||
| 15 | pool_recycle=3600, | ||
| 16 | ) | ||
| 12 | session_factory = sessionmaker(engine, class_=Session) | 17 | session_factory = sessionmaker(engine, class_=Session) |
| 13 | ScopedSession = scoped_session(session_factory=session_factory) | 18 | ScopedSession = scoped_session(session_factory=session_factory) |
| 14 | 19 | ||
| 20 | |||
| 15 | def get_session(): | 21 | def get_session(): |
| 16 | with ScopedSession() as session: | 22 | with ScopedSession() as session: |
| 17 | yield session | 23 | yield session |
| 18 | 24 | ||
| 25 | |||
| 19 | @contextmanager | 26 | @contextmanager |
| 20 | def get_session_context(autocommit=True): | 27 | def get_session_context(autocommit=True): |
| 21 | session = next(get_session()) | 28 | session = next(get_session()) |
