Cómo eliminar un registro por id en Flask-SQLAlchemy


128

Tengo una userstabla en mi base de datos MySql. Esta tabla tiene id, namey agecampos.

¿Cómo puedo eliminar algunos registros id?

Ahora uso el siguiente código:

user = User.query.get(id)
db.session.delete(user)
db.session.commit()

Pero no quiero hacer ninguna consulta antes de eliminar la operación. ¿Hay alguna forma de hacer esto? Lo sé, puedo usar db.engine.execute("delete from users where id=..."), pero me gustaría usar el delete()método.

Respuestas:


206

Puedes hacerlo,

User.query.filter_by(id=123).delete()

o

User.query.filter(User.id == 123).delete()

Asegúrese commitde delete()que surta efecto.


19
Asegúrate de ponerlo db.session.commit()al final. donde el db: db = SQLAlchemy(app)
Ben

¿Se puede usar IN con este método?
ram4nd

10
Advertencia: deleteno se aplicará en cascada si confía en la cascada en python / ORM. Deberá consultar primero el objeto y luego eliminarlo .
nirvana-msu

55
¿Qué pasaría si Userno existe?
senaps

¿Cómo podemos anular / extender este método delete ()? para una clase Usuario definido en nuestro models.py en la aplicación de matraz.
Hossein


9

Otra posible solución, especialmente si desea eliminar por lotes

deleted_objects = User.__table__.delete().where(User.id.in_([1, 2, 3]))
session.execute(deleted_objects)
session.commit()
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.