>  기사  >  백엔드 개발  >  Django의 update 및 save() 기능이 동시에 발생하는 버그

Django의 update 및 save() 기능이 동시에 발생하는 버그

高洛峰
高洛峰원래의
2016-11-22 14:55:161537검색

save() 기본적으로 저장 후 sql 문에서 모든 필드가 업데이트된 것을 확인할 수 있으며, save 값은 이전에 얻은 필드 값이 캐시되어 반드시 최신 값은 아닙니다. . 프로세스의 다른 곳에서 업데이트되었을 수 있습니다.

UPDATE `pxb_sx2_test` SET `user_id` = 335, `catalog_id` = 12558, `level_id` = 4, `level_status` = 0, `position` = 440, `type` = 2, `add_time` = '2016-09-14 17:44:07', `update_time` = '2016-09-14 17:53:17.077520' WHERE `pxb_sx2_test`.`id` = 175;

update는 지정된 필드를 업데이트합니다

UPDATE `pxb_sx2_test` SET `position` = 441 WHERE `pxb_sx2_test`.`id` = 1751;

둘이 동시에 사용되거나 다른 장소에서 사용되지만 동시에 업데이트될 수 있으므로 업데이트할 가능성이 있지만 데이터베이스의 값은 변경되지 않습니다. 실제로 업데이트 후 우연히 오래된 필드 값이 저장되어 업데이트가 되지 않았던 것 같습니다. Django 1.5 이후에는 save에서 지정된 필드만 업데이트하기 위해 매개변수를 추가할 수 있습니다. 참고

 test.position = 441
 test.save(update_fields=['position'])


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.