122

Flask-SQLAlchemy を使用して 1 つのテーブルのすべての行を削除するにはどうすればよいですか?

このようなものを探しています:

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

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

4 に答える 4

170

試してくださいdelete

models.User.query.delete()

ドキュメントから:Returns the number of rows deleted, excluding any cascades.

于 2013-05-15T19:55:30.867 に答える
124

DazWorrall の答えは的を射ています。コードがOPとは異なる構造になっている場合に役立つ可能性のあるバリエーションを次に示します。

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

また、次のスニペットのように、コミットするまで削除が有効にならないことを忘れないでください。

try:
    num_rows_deleted = db.session.query(Model).delete()
    db.session.commit()
except:
    db.session.rollback()
于 2014-08-21T19:28:23.480 に答える
75

Flask-Sqlalchemy

すべてのレコードを削除

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

単一の行を削除しました

ここで、DB は Flask-SQLAlchemy クラスのオブジェクトです。そこからすべてのレコードが削除されます。特定のレコードを削除する場合filterは、クエリの句を試してください。元。

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

オブジェクトごとに単一レコードを削除

record_obj = db.session.query(Model).filter(Model.id==123).first()
db.session.delete(record_obj)
db.session.commit()

https://flask-sqlalchemy.palletsprojects.com/en/2.x/queries/#deleting-records

于 2016-07-13T07:06:38.690 に答える