Sea*_*lus 83 python sqlalchemy 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
Run Code Online (Sandbox Code Playgroud)
Daz*_*all 126
试试delete:
models.User.query.delete()
Run Code Online (Sandbox Code Playgroud)
来自文档:Returns the number of rows deleted, excluding any cascades.
Ste*_*rta 82
DazWorrall的回答很明显.如果您的代码的结构与OP的结构不同,那么这可能是有用的变体:
num_rows_deleted = db.session.query(Model).delete()
Run Code Online (Sandbox Code Playgroud)
此外,不要忘记删除只有在提交之后才会生效,如此片段中所示:
try:
num_rows_deleted = db.session.query(Model).delete()
db.session.commit()
except:
db.session.rollback()
Run Code Online (Sandbox Code Playgroud)
ana*_*thi 41
#for all records
db.session.query(Model).delete()
db.session.commit()
Run Code Online (Sandbox Code Playgroud)
这里的DB是Flask-SQLAlchemy类的对象.它将从中删除所有记录,如果要删除特定记录,则filter在查询中尝试子句.恩.
#for specific value
db.session.query(Model).filter(Model.id==123).delete()
db.session.commit()
Run Code Online (Sandbox Code Playgroud)