Pregunta ¿Cómo actualizar la entrada de la fila SQLAlchemy?


Supongamos que la tabla tiene tres columnas: username, password y no_of_logins.

Cuando el usuario intenta iniciar sesión, se comprueba su entrada con una consulta como

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

Si la contraseña coincide, él continúa. Lo que me gustaría hacer es contar cuántas veces el usuario inició sesión. Por lo tanto, cada vez que inicia sesión con éxito, me gustaría incrementar el no_of_logins campo y almacenarlo de nuevo a la tabla de usuario. No estoy seguro de cómo ejecutar la consulta de actualización con SqlAlchemy.


75
2018-03-12 12:37


origen


Respuestas:


user.no_of_logins += 1
session.commit()

74
2018-03-12 12:49



Hay varias formas de UPDATE utilizando 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



Con la ayuda de user=User.query.filter_by(username=form.username.data).first() declaración que obtendrá el usuario especificado en user variable.

Ahora puede cambiar el valor de la nueva variable de objeto como user.no_of_logins += 1 y guarda los cambios con el sessionmétodo de compromiso.


1
2018-03-12 12:59