it-swarm.com.de

Flask-SQLAlchemy löscht alle Zeilen einer Tabelle

Wie lösche ich alle Zeilen in einer einzelnen Tabelle mit Flask-SQLAlchemy?

Nach so etwas suchen:

>>> users = models.User.query.all()
>>> models.db.session.delete(users)

# but it errs out: UnmappedInstanceError: Class '__builtin__.list' is not mapped
75
SeanPlusPlus

Versuchen Sie delete :

models.User.query().delete()

Von den Dokumenten : Returns the number of rows deleted, excluding any cascades.

121
DazWorrall

DazWorralls Antwort ist genau richtig. Hier ist eine Variation, die nützlich sein kann, wenn Ihr Code anders strukturiert ist als die OPs:

num_rows_deleted = db.session.query(Model).delete()

Vergessen Sie auch nicht, dass die Löschung erst wirksam wird, wenn Sie einen Commit durchführen, wie in diesem Snippet:

try:
    num_rows_deleted = db.session.query(Model).delete()
    db.session.commit()
except:
    db.session.rollback()
79
Steve Saporta

Flask-Sqlalchemy

#for all records
db.session.query(Model).delete()
db.session.commit()

hier ist DB die Objektklasse Flask-SQLAlchemy. Es werden alle Datensätze daraus gelöscht. Wenn Sie bestimmte Datensätze löschen möchten, versuchen Sie es mit der filter -Klausel in der Abfrage. Ex.

#for specific value
db.session.query(Model).filter(Model.id==123).delete()
db.session.commit()
39
anand tripathi