Comment puis-je supprimer toutes les lignes d'une seule table à l'aide de Flask-SQLAlchemy?
Vous cherchez quelque chose comme ça:
>>> users = models.User.query.all()
>>> models.db.session.delete(users)
# but it errs out: UnmappedInstanceError: Class '__builtin__.list' is not mapped
La réponse de DazWorrall est parfaite. Voici une variante qui pourrait être utile si votre code est structuré différemment des OP:
num_rows_deleted = db.session.query(Model).delete()
De plus, n'oubliez pas que la suppression ne prendra effet que lorsque vous aurez validé, comme dans l'extrait de code:
try:
num_rows_deleted = db.session.query(Model).delete()
db.session.commit()
except:
db.session.rollback()
#for all records
db.session.query(Model).delete()
db.session.commit()
ici, DB correspond à la classe d'objet Flask-SQLAlchemy. Il supprimera tous les enregistrements et si vous souhaitez supprimer des enregistrements spécifiques, essayez alors la clause filter
dans la requête. ex.
#for specific value
db.session.query(Model).filter(Model.id==123).delete()
db.session.commit()