wip: database object

This commit is contained in:
2025-09-13 14:46:51 +08:00
parent de385e9b26
commit 5b44696fd7
2 changed files with 31 additions and 0 deletions

View File

@ -1,3 +1,4 @@
from .conn import Database
from .init_checker import DatabaseInitCheckResult, check_db_init
from .utils import create_engine, db_path_to_sqlite_url, sqlite_url_to_db_path
@ -5,6 +6,7 @@ __all__ = [
"check_db_init",
"create_engine",
"db_path_to_sqlite_url",
"Database",
"DatabaseInitCheckResult",
"sqlite_url_to_db_path",
]

29
core/database/conn.py Normal file
View File

@ -0,0 +1,29 @@
from pathlib import Path
from sqlalchemy import text
from sqlalchemy.orm import sessionmaker
from core.settings import SettingsKeys, settings
from .utils import create_engine, db_path_to_sqlite_url
class Database:
def __init__(self):
if settings.stringValue(SettingsKeys.General.DatabaseType) != "file":
raise ValueError("DatabaseType is not file")
db_path = settings.stringValue(SettingsKeys.General.DatabaseConn)
if not db_path:
raise ValueError("DatabaseConn is empty")
self.engine = create_engine(db_path_to_sqlite_url(Path(db_path)))
self.sessionmaker = sessionmaker(bind=self.engine)
@property
def b30(self) -> float | None:
with self.sessionmaker() as session:
result = session.execute(
text("SELECT b30 FROM calculated_potential")
).fetchone()
return result[0] if result else None