如题,django 中貌似只有 bulk_update 和 bulk_create,有什么办法可以实现 bulk_update_or_create 吗
1
hmxxmh 2019 年 12 月 11 日
for 循环 + update_or_create
|
3
est 2019 年 12 月 11 日
ORM 再厉害也没法实现 sql 支持不了的事。建议直接撸 insert ... on duplicate update ...
|
4
wonder1z OP @est ORM 支持 update_or_create 的 只不过没有批量的 bulk_update_or_create。单条撸性能太差了
|
7
Ehco1996 2019 年 12 月 11 日
@wonder1z
bulk_create 的本质其实是 insert many 而你的需求是 update_or_create 貌似单条 sql 是做不到的 ( 我也不确定 我觉得比较简单的是分成两步 然后外面套事务 * bulk_create * bulk_update |
12
hmxxmh 2019 年 12 月 11 日
@ytymf with transaction.atomic 只是进入事务,异常统一回滚,不能提升性能,其实我觉得一下创建上千条,肯定慢,放到 celery 里面让他慢慢跑吧
|
16
encro 2019 年 12 月 12 日
|
17
0kaka 2020 年 3 月 1 日
create( )
|
18
bnm965321 2020 年 3 月 12 日
建议拆分成两个数据集合,先用 unique 字段查询哪些需要 update,然后拆分
|