tips: django 使用的 mysql, 以往用的是 flask 的 sqlalchemy, 比如同时修改了两个不同表的两条数据 user1 的 name=1,class2 的 name=class2,(两条数据没有关联关系), 我可以 model.add(user1),model.add(class2),最后 model.commit()一次性提交,
但是在 django 的 orm 中, 如果有上述的场景, 一次性提交两条修改的数据(开事物?),该怎么实现呢?
找到了 django 的批量创建 bulk_update(), 但是此方法只支持批量更新同张表的多条数据,并且需要指定 fields
问题: 1.批量修改多张表的多条数据怎么一次性提交保存? 2.django 有没有在提交数据之前的 flush 操作(在创建新数据的时候,flush 操作可以获取新数据的 id,但是此时数据并没有保存到 mysql 中)
1
chen774553620 2020-04-16 09:42:32 +08:00
from django.db import transaction
with transaction.atomic: |
2
kayseen OP @chen774553620
了解, 真棒~ |
3
Vegetable 2020-04-16 09:47:56 +08:00 1
|
5
EricCartmann 2020-04-16 10:05:29 +08:00 via iPhone
一楼已经终结这个问题。transaction 模块完美解决,加上 with transaction.atomic()还可以提供事务的特性👍🏿,引入一个 savepoint 还可以回滚。
|