django에서 데이터를 업데이트하는 몇 가지 방법 비교

3399 단어 django
django에서 데이터를 업데이트해야 하는 경우 다음과 같은 여러 가지 방법이 있습니다.
    user = Test.objects.filter(name='   ')[0]
    user.phone = '18822221111'
    user.save()

    user = Test.objects.get(name='   ')
    user.phone = '18822221111'
    user.save()

    Test.objects.filter(name='   ').update(phone='18822221111')

우리는django가 이때 어떤 처리를 했는지 살펴보자.
connection을 사용합니다.queries는django에서 실행하는 모든 mysql 문장을 볼 수 있습니다:
    from django.db import connection

    user = Test.objects.filter(name='   ')[0]
    user.phone = '18822221111'
    user.save()

    user = Test.objects.get(name='   ')
    user.phone = '18822221111'
    user.save()

    Test.objects.filter(name='   ').update(phone='18822221111')

    print(connection.queries)

이 때 반환된 값을 볼 수 있습니다.
[{u'time': u'0.000', u'sql': u'SET SQL_AUTO_IS_NULL = 0'}, {u'time': u'0.000', u'sql': u'SET SQL_AUTO_IS_NULL = 0'}, {u'time': u'0.001', u'sql': u"SELECT `test_name`.`id`, `test_name`.`phone`, `test_name`.`name`, `test_name`.`item1`, `test_name`.`item2` FROM `test_name` WHERE `test_name`.`name` = '\u5f20\u5c0f\u817f' LIMIT 1"}, {u'time': u'0.000', u'sql': u"UPDATE `test_name` SET `phone` = '18822221111', `name` = '\u5f20\u5c0f\u817f', `item1` = '222', `item2` = '111' WHERE `test_name`.`id` = 1"}, {u'time': u'0.001', u'sql': u"SELECT `test_name`.`id`, `test_name`.`phone`, `test_name`.`name`, `test_name`.`item1`, `test_name`.`item2` FROM `test_name` WHERE `test_name`.`name` = '\u5f20\u5c0f\u817f'"}, {u'time': u'0.001', u'sql': u"UPDATE `test_name` SET `phone` = '18822221111', `name` = '\u5f20\u5c0f\u817f', `item1` = '222', `item2` = '111' WHERE `test_name`.`id` = 1"}, {u'time': u'0.000', u'sql': u"UPDATE `test_name` SET `phone` = '18822221111' WHERE `test_name`.`name` = '\u5f20\u5c0f\u817f'"}]

정리해 보자. 그중에 5개의 ql문장이 있다.
u"SELECT `test_name`.`id`, `test_name`.`phone`, `test_name`.`name`, `test_name`.`item1`, `test_name`.`item2` FROM `test_name` WHERE `test_name`.`name` = '   ' LIMIT 1"

u"UPDATE `test_name` SET `phone` = '18822221111', `name` = '   ', `item1` = '222', `item2` = '111' WHERE `test_name`.`id` = 1"



u"SELECT `test_name`.`id`, `test_name`.`phone`, `test_name`.`name`, `test_name`.`item1`, `test_name`.`item2` FROM `test_name` WHERE `test_name`.`name` = '   '"

u"UPDATE `test_name` SET `phone` = '18822221111', `name` = '   ', `item1` = '222', `item2` = '111' WHERE `test_name`.`id` = 1"



u"UPDATE `test_name` SET `phone` = '18822221111' WHERE `test_name`.`name` = '   '"

보시다시피 앞의 두 가지 방법은 모두 select 다음에 업데이트된 모든 필드를 포함하고 업데이트되지 않은 필드를 포함합니다. get을 사용할 때 limit 1의 제한이 있고 한 개의 데이터만 얻을 수 있습니다.
사용하다.업데이트 방법은 select 프로세스를 생략하고 효율이 가장 높습니다.
그래서 결론:
django에서
데이터를 업데이트할 필요가 있으면 반드시 사용하십시오.업데이트 방법;
첫 번째 Object 대상을 꺼내려면 반드시 사용하십시오.get 방법filter[0]. 

좋은 웹페이지 즐겨찾기