2016-08-27 5 views
0

Ich möchte die email Spalte der user Tabelle aktualisieren, wo id == 3. Unterhalb des Codes werden keine Zeilen aktualisiert oder es treten sogar Fehler auf. Wo könnte das Problem sein?SQLAlchemy Update funktioniert weder noch löst Fehler

from sqlalchemy import update 
@app.route('/testupdate/') 
def testupdate(): 
    stmt = update(user).where(user.id==3).values(email='[email protected]') 
    db.session.commit() 
    return 'done' 
+0

versuchen Sie dies - session.query (Benutzer). filter (User.id == 3) .update ({"email": "a @ b"}) – SumanKalyan

+0

Dieser Fehler ist aufgetreten: 'AttributeError: 'NullSession' Objekt hat kein Attribut 'query'' – Andishe

Antwort

0

Das Problem ist, dass kein SQL in die Datenbank emittiert wurde.

stmt = update(user).where(user.id==3).values(email='[email protected]') 

Führt die Anweisung nicht tatsächlich aus, sie erstellt sie nur. Um es tatsächlich ausführen müssen Sie es zu

db.session.execute(stmt) 

passieren und dann zu begehen. Sie können auch verwenden, anstatt nur die Query API der Sitzung:

db.session.query(user).\ 
     filter_by(id=3).\ 
     update({user.email: '[email protected]'}, 
       synchronize_session='evaluate') 

Beachten Sie, dass in Abhängigkeit davon, ob Sie die betroffenen Instanzen in der Sitzung haben und werden sie später verwenden auf Sie wählen könnten gar nicht synchronisieren mit False.

+0

Es funktioniert nicht. – Andishe

+0

Was ist der Fehler, wenn überhaupt? –

+0

nein nichts, kein Fehler und keine Änderungen. – Andishe

Verwandte Themen