问题:如何在Flask-SQLAlchemy中按ID删除记录
我users
在MySql数据库中有表。这个表有id
,name
而且age
领域。
如何删除某些记录id
?
现在,我使用以下代码:
user = User.query.get(id)
db.session.delete(user)
db.session.commit()
但是我不想在删除操作之前进行任何查询。有什么办法吗?我知道,我可以使用db.engine.execute("delete from users where id=...")
,但是我想使用delete()
方法。
回答 0
你可以这样做,
User.query.filter_by(id=123).delete()
要么
User.query.filter(User.id == 123).delete()
确保作出commit
的delete()
生效。
回答 1
只想分享另一个选择:
# mark two objects to be deleted
session.delete(obj1)
session.delete(obj2)
# commit (or flush)
session.commit()
http://docs.sqlalchemy.org/en/latest/orm/session_basics.html#deleting
在此示例中,以下代码可以正常工作:
obj = User.query.filter_by(id=123).one()
session.delete(obj)
session.commit()
回答 2
另一个可能的解决方案,特别是如果要批量删除
deleted_objects = User.__table__.delete().where(User.id.in_([1, 2, 3]))
session.execute(deleted_objects)
session.commit()
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。