Frage Wie SQLAlchemy Zeileneintrag aktualisieren?


Angenommen, Tabelle hat drei Spalten: username, password und no_of_logins.

Wenn ein Benutzer versucht sich anzumelden, wird er auf einen Eintrag mit einer Abfrage wie z

user=User.query.filter_by(username=form.username.data).first()

Wenn das Passwort übereinstimmt, geht er weiter. Ich möchte zählen, wie oft der Benutzer sich angemeldet hat. Wenn ich mich also erfolgreich anmelde, möchte ich den Wert erhöhen no_of_logins Feld und speichern Sie es zurück in die Benutzertabelle. Ich bin mir nicht sicher, wie ich die Update-Abfrage mit SqlAlchemy ausführen soll.


75
2018-03-12 12:37


Ursprung


Antworten:


user.no_of_logins += 1
session.commit()

74
2018-03-12 12:49



Es gibt mehrere Möglichkeiten UPDATE verwenden sqlalchemy

1) user.no_of_logins += 1
   session.commit()

2) session.query().\
       filter(User.username == form.username.data).\
       update({"no_of_logins": (User.no_of_logins +1)})
   session.commit()

3) conn = engine.connect()
   stmt = User.update().\
       values(no_of_logins=(User.no_of_logins + 1)).\
       where(User.username == form.username.data)
   conn.execute(stmt)

4) setattr(user, 'no_of_logins', user.no_of_logins+1)
   session.commit()

208
2017-11-13 23:02



Mit der Hilfe von user=User.query.filter_by(username=form.username.data).first() Anweisung erhalten Sie den angegebenen Benutzer user Variable.

Jetzt können Sie den Wert der neuen Objektvariablen wie ändern user.no_of_logins += 1 und speichern Sie die Änderungen mit sessionCommit-Methode.


1
2018-03-12 12:59