Django事务

事务(transaction)

1、导包。

事务属于数据库的范畴,故导包路径如下:

from from django.db import transaction

2、调用 atomic 函数
事务函数 atomic 有两种用法:装饰器和 with 用法。

  • 装饰器用法

被atomic装饰的函数将直接作为一个事务执行。

@transaction.atomic
def modify_database():
  """
  所有修改数据库的操作作为一个事务,要么都做,要么都不做
  """
  pass
  • with 用法

包含在with语句内部的所有数据库修改操作将作为一个事务一起执行。

with transaction.atomic():
  """
  with 内部所有修改数据库的操作作为一个事务,要么都做,要么都不做
  """
  pass

3、提交与回滚

  • 保存点

事务保存节点,在事务开始时设置。或设置在一些多分支的节点上。

# 创建保存点
save_id = transaction.savepoint()
  • 提交

结束并提交事务。一个事务结束后不要忘了提交到数据库。

# 提交从保存点到当前状态的所有数据库事务操作
transaction.savepoint_commit(save_id)
  • 回滚

当出现数据库错误,或需取消某一段的事务时,可以回滚到事务的前一保存节点处。

# 回滚到保存点
transaction.savepoint_rollback(save_id)
posted @   流水自净  阅读(224)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示