ホームページ  >  記事  >  バックエンド開発  >  Django の update 関数と save() 関数を同時に実行するバグ

Django の update 関数と save() 関数を同時に実行するバグ

高洛峰
高洛峰オリジナル
2016-11-22 14:55:161537ブラウズ

save() デフォルトでは、sql ステートメント内のすべてのフィールドが更新されていることがわかります。これは、以前に取得されたときのフィールド値であり、最新ではない可能性があります。プロセスの他の場所で更新されました

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 でパラメーターを追加して、指定されたフィールドのみを更新できるようになりました。参考

rreee


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。