SQLAlchemy n'essaie pas de définir le champ car il pense que la valeur n'a pas changé.
Vous pouvez indiquer à SQLAlchemy de réaffecter la valeur en spécifiant l'attribut onupdate sur la colonne :
Column('timestamp', ..., onupdate=literal_column('timestamp'))
Cela entraînera l'ajout automatique de timestamp=timestamp
par SQLAlchemy à toutes les requêtes de mise à jour.
Si vous avez besoin de le faire une seule fois sur une instance, vous pouvez lui affecter la colonne :
foo.timestamp = literal_column('timestamp')
# or
foo.timestamp = foo_tbl.c.timestamp