db engine

This commit is contained in:
2026-09-04 14:41:29 +02:00
parent 99d6c1bde2
commit f076d2e841
3 changed files with 37 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
DATABASE_URL_DEFAULT = "sqlite:///finanz.db"
+3
View File
@@ -8,3 +8,6 @@ wheels/
# Virtual environments # Virtual environments
.venv .venv
# Environment variables
.env
+33
View File
@@ -0,0 +1,33 @@
#!/bin/python
import os
from collections.abc import Generator
from contextlib import contextmanager
from sqlalchemy import Engine, create_engine
from sqlalchemy.orm import Session, sessionmaker
DATABASE_URL_DEFAULT = "sqlite:///finanz.db"
def get_engine() -> Engine:
url = os.environ.get("DATABASE_URL", DATABASE_URL_DEFAULT)
return create_engine(url)
def get_sessionmaker(engine: Engine | None = None) -> sessionmaker[Session]:
engine = engine or get_engine()
return sessionmaker(bind=engine)
@contextmanager
def get_session(engine: Engine | None = None) -> Generator[Session]:
session_factory = get_sessionmaker(engine)
session = session_factory()
try:
yield session
except Exception:
session.rollback()
raise
finally:
session.close()