
save()之后代码没有报错,数据库字段已经更改成功,之后 3-5 分钟字段又恢复到原来的状态. 这段代码是每天都执行的自动脚本的一小部分 这个字段每天都会被更改
if ser_list: for s in ser_list: create_time = s.create_time dt = now - create_time if dt.days == 0 and dt.seconds / 60 > 0 and dt.seconds / 60 < 3: s.status = 4 s.commend = 1 s.last_time = datetime.datetime.now() s.save() 业务环境(django 1.6+python2.6+mysql5.6 ),祖传项目项目,有点老
1 37Y37 2020-05-12 18:29:12 +08:00 可能数据问题,也可能是有别的脚本改了数据 |
2 encro 2020-05-12 18:34:28 +08:00 log |
3 ipwx 2020-05-12 18:38:51 +08:00 可能是别的什么地方读出来了又写回去了。好像 Django 的 .save() 是把所有字段重新存一遍,而不是只更新 dirty fields 。 |
4 cominghome 2020-05-12 18:53:18 +08:00 找 audit 或者 bin log,看你的描述不觉得是 orm 的问题 |
5 wzwwzw 2020-05-13 01:51:24 +08:00 save 是把整个对象都重新存一遍,所以检查下 log 是不是有别的地方也更新过。 |
6 chaohuang 2020-05-13 10:38:47 +08:00 用 update 吧 |
9 codeli 2020-05-13 20:29:47 +08:00 查日志 |
10 wobushibaoabao1 2020-05-16 12:24:41 +08:00 这个问题实际上是因为,另外还有一个定时任务工作中, 使用到了同样的数据库模型, 同时,也会有 save 操作, 在偶然的时间点里, 这个脚本拿到了缓存的 query_set, 然后进行了 save 动作,导致,另一个定时任务的某个字段修改失败. |