Как запустить sqlalchemy mapped_column on_update=func()?Python

Программы на Python
Anonymous
Как запустить sqlalchemy mapped_column on_update=func()?

Сообщение Anonymous »

У меня есть атрибут метки времени для класса SQLAlchemy ORM.

класс унаследован от (AsyncAttrs, DeclarativeBase).
вот мое объявление атрибута:

Код: Выделить всё

    timestamp_last_modified: Mapped[datetime] = mapped_column(DateTime, default=func.now(), onupdate=func.now())
Я хочу, чтобы этот атрибут обновлялся при изменении любого другого атрибута объекта.
Я использую setattr(obj, key)

например

Код: Выделить всё

setattr(person1, name, "newName") 
но метка времени не обновляется автоматически....

также с помощью функции обновления SQLAlchemy метка времени не обновляется.
какой тип обновления необходим для автоматического обновления моей метки времени с помощью функции `onupdate`?
Я вижу объект изменений в наборе session.dirty. и атрибут правильно обновлен. но временная метка остается старой.
вывод на печать:

Код: Выделить всё

now: 2026-01-09 13:29:20.675518
session.dirty IdentitySet([])
flush erfolgreich
Выходные данные теста:

Код: Выделить всё

AssertionError: '2026-01-09 13:29:18' == '2026-01-09 13:29:18'


Подробнее здесь: https://stackoverflow.com/questions/798 ... pdate-func

Вернуться в «Python»