¿Cómo puedo actualizar la información de una fila?
Por ejemplo, me gustaría modificar la columna de nombre de la fila que tiene la identificación 5.
                    
                        python
                                sqlalchemy
                                flask-sqlalchemy
                                
                    
                    
                        pocorschi
fuente
                
                
            fuente

uesd_at = db.Column(db.DateTime)simplemente ejecutoobj.used_at = datetime.datetime.now()db.session.commit()Pero no valor establecido en el campo.Hay un método
updateen el objeto BaseQuery en SQLAlchemy, que es devuelto porfilter_by.La ventaja de usar
updatesobre el cambio de entidad viene cuando hay muchos objetos para actualizar.Si quieres dar
add_userpermiso a todos losadmins,Observe que
filter_bytoma argumentos de palabras clave (use solo uno=) en lugar de lofilterque toma una expresión.fuente
admin, lo que puede ser engañoso ya que el resultado será el número de filas actualizadas. ¿No es así?Userelementos afectados por la consulta, no la cantidad de usuarios afectados?Esto no funciona si modifica un atributo decapado del modelo. Los atributos en escabeche deben reemplazarse para activar actualizaciones:
fuente
datay reasignarlo.user.data = dataSimplemente asignar el valor y confirmarlos funcionará para todos los tipos de datos, excepto los atributos JSON y Pickled. Dado que el tipo en escabeche se explica anteriormente, anotaré una forma ligeramente diferente pero fácil de actualizar JSON.
Digamos que el modelo es como el anterior.
Esto agregará al usuario a la base de datos MySQL con datos {"country": "Sri Lanka"}
Se ignorará la modificación de datos. Mi código que no funcionó es el siguiente.
En lugar de pasar por el doloroso trabajo de copiar el JSON a un nuevo dictado (sin asignarlo a una nueva variable como arriba), que debería haber funcionado, encontré una manera simple de hacerlo. Hay una forma de marcar el sistema de que los JSON han cambiado.
A continuación se muestra el código de trabajo.
Funcionó como por arte de magia. Hay otro método propuesto junto con este método aquí Espero haber ayudado a alguien.
fuente
db.session.merge(user)agregar este código funcionó para mí, FYI.