SuperAPI AI 工具集

django-transaction

通用与其它

查看项目

更新于 10-15 20:13

技能介绍

用途:在 Django 中处理竞态条件、锁与事务边界,保证数据一致性。

主要能力:atomic 提供事务边界并在异常时回滚,支持嵌套 savepoint 与 savepoint_rollback;select_for_update 实现行级锁,支持 nowait、skip_locked、of 等选项(适用于 PostgreSQL、MySQL、Oracle,不适用于 SQLite);on_commit 在事务提交后执行延迟回调,避免在事务内调用外部 API;update_or_create 处理 upsert,配合唯一约束与 IntegrityError 捕获返回 409 冲突;M2M 关系需先保存对象获得主键后再 set;还涉及隔离级别配置、事务状态检查、批量操作与迁移中先加唯一约束再去重。

使用方式:以 @transaction.atomic 装饰视图或函数,或用 with transaction.atomic() 上下文管理器;生成唯一编号时在 atomic 内用 select_for_update 锁定行;外部调用通过 on_commit 注册回调;upsert 前先添加唯一约束并做数据迁移去重。

适用场景:订单创建、支付扣款、库存批量更新、外部资源同步、唯一编码生成等需要原子性与并发安全的操作。

限制:select_for_update 不支持 SQLite;事务应尽量短以减少锁持有;回调内异常不应回滚事务,需自行捕获记录;资料未提供具体版本兼容范围与性能基准。