Python SQLAlchemy: ¿Reflejar la base de datos rompe los métodos predeterminados / actualizados?

Tengo dos interfaces SQLAlchemy separadas para una base de datos Postgres. La primera interfaz, en el contexto de una aplicación Flask, contiene este modelo:

app = create_app() # sets the SQLAlchemy Database URI, etc.
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    created_at = db.Column(db.DateTime, default=datetime.datetime.utcnow)
    updated_at = db.Column(db.DateTime, onupdate=datetime.datetime.utcnow)
    name = db.Column(db.String, nullable=False)

La segunda interfaz no es a través de Flask, sino que es un script que escucha un evento en particular, en cuyo caso está destinado a realizar algunos cálculos y actualizar una fila en la base de datos. Para lograr esto, tengo SQLAlchemy que refleja la base de datos existente:

from sqlalchemy import create_engine, MetaData, Table
from sqlalchemy.orm import mapper, sessionmaker
from sqlalchemy.ext.automap import automap_base
from os import environ

dbPath = "postgresql://" + ...
engine = create_engine(dbPath)

Base = automap_base()
Base.prepare(engine, reflect=True)

metadata = MetaData(engine)

class User(object):
    pass

users = Table('user', metadata, autoload=True, autoload_with=engine)
mapper(User, users)

Session = sessionmaker(bind=engine)
session = Session()

El problema con el que me encuentro ahora es este: cuando estoy usando la primera interfaz para crear una nueva entrada o actualizar una, las cosas funcionan como se esperaba, y elcreated_at yupdated_at los campos se actualizan adecuadamente.

Sin embargo, cuando estoy usando la segunda interfaz, importando el código y usandosession.query(User) para obtener una entrada y actualizarla, laupdated_at El campo no cambia. Además, cuando uso esta interfaz para crear un nuevo Usuario, mientras crea la nueva fila como se esperaba, no llena ni elcreated_at niupdated_at campos.

Mis preguntas:

¿Por qué está pasando esto? ¿Por qué el reflejo aparentemente rompe eldefault/onupdate métodos?¿Cómo puedo arreglar esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta