sqlite - @commit_on_success 和 save()

标签 sqlite peewee

我在质疑自己关于新 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/

    相关文章:

    python - sqlite - python 检索 CURRENT_TIMESTAMP 作为日期时间对象

    android - 从异步任务执行时 "error code 5: databse is locked"

    multithreading - 带有Qt的SQLite3中的“Database is locked”错误

    android - 使用 ORDER BY 在 android sqlite rawQuery 中出现问题?

    python - 如何以正确的方式在 Python 中连接到 MySQL 数据库?

    python - Peewee+sqlite可以做递归CTE查询吗?

    sqlite - 等价于亚音速的SqLite Blob类型?

    Python peewee 外键

    python - peewee 和 peewee 异步 : why is async slower

    python - Peewee (Python Sqlite ORM) - 名称错误 : name 'SqliteDatabase' is not defined