首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Flask-SQLAlchemy中按id删除记录

如何在Flask-SQLAlchemy中按id删除记录
EN

Stack Overflow用户
提问于 2014-11-27 04:45:43
回答 3查看 174.8K关注 0票数 185

我的MySql数据库中有users表。此表包含idnameage字段。

如何通过id删除某些记录

现在我使用以下代码:

代码语言:javascript
复制
user = User.query.get(id)
db.session.delete(user)
db.session.commit()

但是我不想在删除操作之前做任何查询。有没有办法做到这一点?我知道,我可以使用db.engine.execute("delete from users where id=..."),但我想使用delete()方法。

EN

回答 3

Stack Overflow用户

发布于 2017-08-22 23:39:27

我只想分享另一个选择:

代码语言:javascript
复制
# 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

在本例中,以下代码应该可以正常工作:

代码语言:javascript
复制
obj = User.query.filter_by(id=123).one()
session.delete(obj)
session.commit()
票数 64
EN

Stack Overflow用户

发布于 2019-03-14 20:47:49

另一种可能的解决方案,特别是如果您想要批量删除

代码语言:javascript
复制
deleted_objects = User.__table__.delete().where(User.id.in_([1, 2, 3]))
session.execute(deleted_objects)
session.commit()
票数 20
EN

Stack Overflow用户

发布于 2021-05-30 03:30:52

在sqlalchemy 1.4 (2.0风格)中,你可以这样做:

代码语言:javascript
复制
from sqlalchemy import select, update, delete, values

sql1 = delete(User).where(User.id.in_([1, 2, 3]))
sql2 = delete(User).where(User.id == 1)

db.session.execute(sql1)
db.session.commit()

代码语言:javascript
复制
u = db.session.get(User, 1)
db.session.delete(u)
db.session.commit()

在我看来,使用select、update、delete更具可读性。风格比较1.0和2.0可以在here找到。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27158573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档