1

我在质疑自己关于新 peewee 的功能:commit_on_success装饰器。

  1. 如何判断函数是否“成功”?

  2. 如果我使用这个装饰器,我需要调用save()我改变的对象吗?

根据我的尝试,我认为 #2 是肯定的,但我只是想确定,因为我在 peewee 的文档中找不到这两个问题的明确答案。

4

1 回答 1

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')

如果在该函数中的任何地方引发异常,则不会转移任何资金并且将引发异常。

否则,如果没有引发异常,则会转移资金并返回响应。

于 2012-09-09T23:37:40.753 回答