Как вывести в терминал значения до обновления, после обновления и вставленные значения?
Подскажите пожалуйста как при выполнении кода ниже можно добавить вывод значений которые были обновлены, значения до обновления и вставленные значения? К примеру хочется видеть в выводе следующую информацию:
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 для этого, но у меня так и не получилось вывести в обработчик событий информацию об обновленных значениях
Источник: Stack Overflow на русском