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()