blob: 52560965c3d90bfbe8662ec9ac7a98ee60c8df9e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
from typing import ClassVar
from serenitas.utils.db2 import dbconn
class Report:
_sql_insert: ClassVar[str]
_conn: ClassVar = dbconn("dawndb")
def __init_subclass__(cls, table_name: str, columns: tuple[str], **kwargs):
super().__init_subclass__(**kwargs)
place_holders = ",".join(["%s"] * len(columns))
cls._sql_insert = f"INSERT INTO {table_name}({','.join(columns)}) VALUES({place_holders}) ON CONFLICT DO NOTHING RETURNING *"
def __class_getitem__(cls, key):
return cls._registry[key]
def commit(self):
with self._conn.cursor() as c:
c.executemany(self._sql_insert, self)
self._conn.commit()
|