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 动作,导致,另一个定时任务的某个字段修改失败.
|