我在质疑新的peewee的功能:commit_on_success
装饰。
如何确定该功能是否“成功”?
如果我使用这个装饰器,我是否需要在我改变的对象上调用save()
?
根据我的尝试,我认为#2是肯定的,但我只是想确定,因为我在peewee的文档中找不到这两个问题的明确答案。
答案 0 :(得分:2)
我认为你所说的装饰者实际上叫做commit_on_success
,并且作为Database
类的方法实现。
这个想法是,假设你想在请求/回复中转移一些钱。这是一个非常好的例子:
db = SqliteDatabase('my_database.db')
@db.commit_on_success
def process_transfer_request(request, from_id, to_id, amount):
from_acct = Account.get(id=from_id)
to_acct = Account.get(id=to_id)
from_acct.balance -= amount
to_acct.balance += amount
from_acct.save()
to_acct.save()
return Response('success! the money was transferred')
如果在该职能中任何地方提出异常,则不会转移任何款项,并且会引发例外。
否则,如果没有引发异常,将转移资金并返回响应。