如果这是我的模特:
class Entity(Base):
id = Column(Integer, primary_key=True)
count = Column(Integer, default=0)
我想删除任何达到count
值3(或任何数字)的行。
我怎样才能做到这一点?
我应该在我的Web应用程序的Controller中实现这样的删除,并且每次count
递增时,我检查它的值是否为3?我应该如何关心正在改变值的并发请求?什么是最好的解决方案?
答案 0 :(得分:1)
在经过一段时间思考和咨询专家之后,我发现解决这个问题的方法是在数据库中实现锁定或使用redis。由于锁定可能会导致多个请求中出现性能问题,因此最好将count
的值存储在redis数据库中,并尝试在特定时间段内更新对象关系数据库中的count
值。
答案 1 :(得分:-2)
我应该在我的网络应用程序的控制器中实现删除吗?
是。您应该在控制器中实现它。只需确保您有一个能够访问控制器中delete
功能的视图。
我该怎么做?
简单。在控制器中,创建一个将处理删除的函数。删除函数体应如下所示:
limit = 3 # The value of this variable is arbitrary.
Entity.query.filter(Entity.count == limit).delete()
# The two statements above can be simplified to
# Entity.query.filter(Entity.count == 3).delete()
db.session.commit()
更好的是,添加一个函数参数,该参数将接受一个值,该值将是行中列的最大值。它看起来像这样:
def delete_entity(limit=3): # I set `limit` to 3 since that is what you have stated earlier in the question
Entity.query.filter(Entity.count == limit).delete()
db.session.commit()
每次计数递增时,我检查值是否为3?什么是最好的解决方案?
这取决于您希望应用程序执行的操作。