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 

尝试delete

 models.User.query.delete() 

从文档 : Returns the number of rows deleted, excluding any cascades.

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(Table_name).delete() db.session.commit() 

这里db是Flask的SQLAlchemy类的对象。 它会删除它的所有logging,如果你想删除特定的logging,然后在查询中尝试filter_by子句。 恩。

 #for specific value db.session.query(Table_name).filter_by(id==123).delete() db.session.commit()