aboutsummaryrefslogtreecommitdiff
path: root/server/szurubooru/db.py
diff options
context:
space:
mode:
Diffstat (limited to 'server/szurubooru/db.py')
-rw-r--r--server/szurubooru/db.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/server/szurubooru/db.py b/server/szurubooru/db.py
new file mode 100644
index 0000000..f90bfaf
--- /dev/null
+++ b/server/szurubooru/db.py
@@ -0,0 +1,36 @@
+from typing import Any
+import threading
+import sqlalchemy as sa
+import sqlalchemy.orm
+from szurubooru import config
+
+# pylint: disable=invalid-name
+_data = threading.local()
+_engine = sa.create_engine(config.config['database']) # type: Any
+sessionmaker = sa.orm.sessionmaker(bind=_engine, autoflush=False) # type: Any
+session = sa.orm.scoped_session(sessionmaker) # type: Any
+
+
+def get_session() -> Any:
+ global session
+ return session
+
+
+def set_sesssion(new_session: Any) -> None:
+ global session
+ session = new_session
+
+
+def reset_query_count() -> None:
+ _data.query_count = 0
+
+
+def get_query_count() -> int:
+ return _data.query_count
+
+
+def _bump_query_count() -> None:
+ _data.query_count = getattr(_data, 'query_count', 0) + 1
+
+
+sa.event.listen(_engine, 'after_execute', lambda *args: _bump_query_count())

© 2015 - 2026 Jakob L. Kreuze