Как запустить 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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