Wie interagiert die Methode dict update in SQLAlchemy mit dem ORM?

So hatte ich eine SQLAlchemy-Tabelle mit einer JSON-Spalte:

from sqlalchemy.dialects.postgresql import JSON
class MyTable(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    my_json_column = db.Column(JSON)

Und ich habe versucht, die Spalte mit dem @ zu aktualisierdict#update Methode wie folgt:

def foo(my_object, new_params):
    my_object.my_json_column.update(new_params)
    db.session.commit()

Das hat aber nicht funktioniert. Bearbeiten:Was ich damit gemeint habe ist, dass die Updates nicht in der Datenbank gespeichert wurden.

Was hat funktioniert, war das:

def foo(my_object, new_params):
    temp_params = my_object.my_json_column.copy()
    temp_params.update(new_params)
    my_object.my_json_column = new_params
    db.session.commit()

Ich vermute, es hat etwas mit "Unveränderlichkeit" zu tun, oder der ORM bemerkt Änderungen nur bei direkter Zuordnung oder so. Weiß jemand genau warum?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage