Refs #27025 -- Removed obsolete sqlite3 transaction management workaround for Python 3.6+.

Obsolete per https://bugs.python.org/issue10740#msg274816.
This commit is contained in:
Tim Graham 2018-10-25 19:54:48 -04:00 committed by GitHub
parent c6525bea9e
commit 717ee63e56
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 13 deletions

View File

@ -395,7 +395,7 @@ class BaseDatabaseWrapper:
start_transaction_under_autocommit = ( start_transaction_under_autocommit = (
force_begin_transaction_with_broken_autocommit and not autocommit and force_begin_transaction_with_broken_autocommit and not autocommit and
self.features.autocommits_when_autocommit_is_off hasattr(self, '_start_transaction_under_autocommit')
) )
if start_transaction_under_autocommit: if start_transaction_under_autocommit:
@ -595,15 +595,6 @@ class BaseDatabaseWrapper:
allow_thread_sharing=False, allow_thread_sharing=False,
) )
def _start_transaction_under_autocommit(self):
"""
Only required when autocommits_when_autocommit_is_off = True.
"""
raise NotImplementedError(
'subclasses of BaseDatabaseWrapper may require a '
'_start_transaction_under_autocommit() method'
)
def schema_editor(self, *args, **kwargs): def schema_editor(self, *args, **kwargs):
""" """
Return a new instance of this backend's SchemaEditor. Return a new instance of this backend's SchemaEditor.

View File

@ -1,3 +1,5 @@
import sys
from django.db import utils from django.db import utils
from django.db.backends.base.features import BaseDatabaseFeatures from django.db.backends.base.features import BaseDatabaseFeatures
from django.utils.functional import cached_property from django.utils.functional import cached_property
@ -13,7 +15,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
supports_timezones = False supports_timezones = False
max_query_params = 999 max_query_params = 999
supports_mixed_date_datetime_comparisons = False supports_mixed_date_datetime_comparisons = False
autocommits_when_autocommit_is_off = True autocommits_when_autocommit_is_off = sys.version_info < (3, 6)
can_introspect_decimal_field = False can_introspect_decimal_field = False
can_introspect_duration_field = False can_introspect_duration_field = False
can_introspect_positive_integer_field = True can_introspect_positive_integer_field = True

View File

@ -173,8 +173,8 @@ class Atomic(ContextDecorator):
connection.commit_on_exit = True connection.commit_on_exit = True
connection.needs_rollback = False connection.needs_rollback = False
if not connection.get_autocommit(): if not connection.get_autocommit():
# Some database adapters (namely sqlite3) don't handle # sqlite3 in Python < 3.6 doesn't handle transactions and
# transactions and savepoints properly when autocommit is off. # savepoints properly when autocommit is off.
# Turning autocommit back on isn't an option; it would trigger # Turning autocommit back on isn't an option; it would trigger
# a premature commit. Give up if that happens. # a premature commit. Give up if that happens.
if connection.features.autocommits_when_autocommit_is_off: if connection.features.autocommits_when_autocommit_is_off: