Flask-SQLAlchemyを使用して、単一のテーブルのすべての行を削除するにはどうすればよいですか?
このようなものを探しています:
>>> users = models.User.query.all()
>>> models.db.session.delete(users)
# but it errs out: UnmappedInstanceError: Class '__builtin__.list' is not mapped
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()
#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()