Как вывести в терминал значения до обновления, после обновления и вставленные значения?

Рейтинг: 0Ответов: 0Опубликовано: 18.08.2023

Подскажите пожалуйста как при выполнении кода ниже можно добавить вывод значений которые были обновлены, значения до обновления и вставленные значения? К примеру хочется видеть в выводе следующую информацию:

f"""[%(asctime)s] В таблице {Table} для {primary_key} было обновлено значение {column_name}: {old_value} -> {new_value}"""

Где Table - это Table.__table_name__ таблицы, primary_key - это первичные ключи для которых обновлено значение(Table.__table__.primary_key), column_name - название столбца где было обновление, old_value | new_value - старое | новое значение соответственно

from sqlalchemy.dialects.postgresql import insert as pg_insert    

def upsert_table(
        self,
        tname: Base,
        df: DataFrame
    ) -> None:

        with self.Session as session:
            stmt = pg_insert(tname).values(df)
            stmt = stmt.on_conflict_do_update(
                constraint=tname.__table__.primary_key,
                set_=stmt.excluded
            )

            session.execute(stmt)
            session.commit()

Я пытался использовать декоратор listens_for для этого, но у меня так и не получилось вывести в обработчик событий информацию об обновленных значениях

Ответы

Ответов пока нет.