web-dev-qa-db-ja.com

Flask-SQLAlchemy単一テーブル内のすべての行を削除する方法

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

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

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

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

delete を試してください:

models.User.query().delete()

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

121
DazWorrall

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()
79
Steve Saporta

フラスコ-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()
39
anand tripathi