oma*_*mat 13 django transactions commit
Django中的create()方法创建一个模型实例,然后调用save(),据说触发提交.因此触发事务的提交应该没有任何区别.
但实际上,在Postgresql上使用create()创建一组模型实例的方法我得到了transaction aborted, commands ignored until end of transaction异常.该方法适用于非事务性数据库后端.另外,当我用以下内容替换create()时:
m = Model(attr1=..., attr2=...)
m.save()
Run Code Online (Sandbox Code Playgroud)
它也可以在Postgresql上运行.
使用save()和create()交易意义上有区别吗?
edit: create()也在self._for_write = True调用save()之前设置,但我无法跟踪它以查看它是否对事务行为有任何影响.
编辑:示例代码可以在这里找到.
Tom*_*ski 13
你可能已经看过,create()它只是一个包装器save():
该_for_write部分最有可能仅用于数据库选择,因此我不会过多关注它.
关于"交易中止"错误,如果没有看到您的代码,很难说出问题是什么.也许您违反了使用create()的UNIQUE约束,这会导致PostgreSQL要求事务回滚,然后您尝试save()使用不同的数据 - 如果没有确切的代码,很难说清楚.
| 归档时间: |
|
| 查看次数: |
9767 次 |
| 最近记录: |