summaryrefslogtreecommitdiffstats
path: root/db/session.py
diff options
context:
space:
mode:
Diffstat (limited to 'db/session.py')
-rw-r--r--db/session.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/db/session.py b/db/session.py
new file mode 100644
index 0000000..4d83649
--- /dev/null
+++ b/db/session.py
@@ -0,0 +1,21 @@
1from contextlib import contextmanager
2
3from sqlalchemy import create_engine
4from sqlalchemy.orm import sessionmaker, scoped_session
5from sqlmodel import Session
6
7from conf import DATABASE_URL
8from utils.json import json_serializer
9
10
11engine = create_engine(DATABASE_URL, echo=True, future=True, json_serializer=json_serializer, pool_size=100, pool_recycle=3600)
12session_factory = sessionmaker(engine, class_=Session)
13ScopedSession = scoped_session(session_factory=session_factory)
14
15def get_session():
16 with ScopedSession() as session:
17 yield session
18
19@contextmanager
20def get_session_context():
21 yield from get_session()