mirror of
https://github.com/django/django.git
synced 2025-10-29 08:36:09 +00:00
Made SQLCompiler.execute_sql(result_type) more explicit.
Updated SQLUpdateCompiler.execute_sql to match the behavior described in the docstring; the 'first non-empty query' will now include all queries, not just the main and first related update. Added CURSOR and NO_RESULTS result_type constants to make the usages more self documenting and allow execute_sql to explicitly close the cursor when it is no longer needed.
This commit is contained in:
@@ -14,6 +14,7 @@ from django.db.models.fields import AutoField, Empty
|
||||
from django.db.models.query_utils import (Q, select_related_descend,
|
||||
deferred_class_factory, InvalidQuery)
|
||||
from django.db.models.deletion import Collector
|
||||
from django.db.models.sql.constants import CURSOR
|
||||
from django.db.models import sql
|
||||
from django.utils.functional import partition
|
||||
from django.utils import six
|
||||
@@ -574,7 +575,7 @@ class QuerySet(object):
|
||||
query = self.query.clone(sql.UpdateQuery)
|
||||
query.add_update_values(kwargs)
|
||||
with transaction.commit_on_success_unless_managed(using=self.db):
|
||||
rows = query.get_compiler(self.db).execute_sql(None)
|
||||
rows = query.get_compiler(self.db).execute_sql(CURSOR)
|
||||
self._result_cache = None
|
||||
return rows
|
||||
update.alters_data = True
|
||||
@@ -591,7 +592,7 @@ class QuerySet(object):
|
||||
query = self.query.clone(sql.UpdateQuery)
|
||||
query.add_update_fields(values)
|
||||
self._result_cache = None
|
||||
return query.get_compiler(self.db).execute_sql(None)
|
||||
return query.get_compiler(self.db).execute_sql(CURSOR)
|
||||
_update.alters_data = True
|
||||
_update.queryset_only = False
|
||||
|
||||
|
||||
Reference in New Issue
Block a user