我的MySql数据库中有users
表。此表包含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()
方法。
发布于 2017-08-22 23:39:27
我只想分享另一个选择:
# 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()
发布于 2019-03-14 20:47:49
另一种可能的解决方案,特别是如果您想要批量删除
deleted_objects = User.__table__.delete().where(User.id.in_([1, 2, 3]))
session.execute(deleted_objects)
session.commit()
发布于 2021-05-30 03:30:52
在sqlalchemy 1.4 (2.0风格)中,你可以这样做:
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()
或
u = db.session.get(User, 1)
db.session.delete(u)
db.session.commit()
在我看来,使用select、update、delete更具可读性。风格比较1.0和2.0可以在here找到。
https://stackoverflow.com/questions/27158573
复制相似问题