我在质疑自己关于新 peewee 的功能:commit_on_success
装饰师。
save()
在我改变的对象上? 根据我的尝试,我认为 #2 是肯定的,但我只是想确定,因为我在 peewee 的文档中找不到这两个问题的明确答案。
最佳答案
我想你说的装饰器实际上叫做 commit_on_success
, 并作为 Database
上的方法实现类(class)。
这个想法是,假设您想在请求/响应中转移一些钱。这是一个非常糟糕的例子:
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')
如果在该函数中的任何地方引发异常,则不会转移任何资金并且将引发异常。
否则,如果没有引发异常,则会转移资金并返回响应。
关于sqlite - @commit_on_success 和 save(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12213062/