prepare database interaction

This commit is contained in:
2026-06-04 16:42:21 +02:00
parent 949fd46058
commit 8532c605fa
3 changed files with 108 additions and 0 deletions

View File

@@ -1,9 +1,14 @@
# %%
import datetime
import enum
import json
from pathlib import Path
from typing import Any
import polars as pl
import sqlalchemy as sql
from wattanalyse import db
# %%
PROJECT_BASE = Path(__file__).parents[1]
@@ -408,6 +413,36 @@ tmp = tmp.with_columns(
.alias("Durchlaufzeit_Anzahl_Tage"),
)
tmp
# %%
# // dump to database
def _parse_to_json(value: Any) -> str:
if isinstance(value, (datetime.date, datetime.datetime)):
return value.isoformat()
else:
raise TypeError
parsed_lists = tmp.with_columns(
pl.col(pl.List)
.map_elements(
lambda x: json.dumps(x.to_list(), default=_parse_to_json) if x is not None else None,
return_dtype=pl.String,
)
.name.keep()
)
parsed_lists
# %%
parsed_lists["Import-Ist_Historie"].item(0)
# TODO make UPSERT with staging
########################################################
# %%
tmp_1 = tmp.select("Meldezeitpunkt_Historie")
tmp_1 = tmp_1.with_columns(

View File

@@ -0,0 +1,27 @@
# %%
import datetime
import json
from typing import Any
# %%
dt = datetime.datetime.now()
date = dt.date()
# %%
val = [dt, date]
json.dumps(val)
# %%
def _parse_to_json(value: Any) -> str:
if isinstance(value, datetime.date):
return value.isoformat()
elif isinstance(value, datetime.datetime):
return value.isoformat()
else:
raise TypeError
# %%
json.dumps(val, default=_parse_to_json)
# %%