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)
如果觉得本文有用,万望看官慷慨解囊,不吝打赏,激励本编提供更加优质的内容
[点击进行打赏](https://www.cnblogs.com/52note/p/16507868.html)
分类:
Django
, django商城项目
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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