summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/contrib/gis/db/backends/spatialite/base.py17
-rw-r--r--django/db/backends/sqlite3/base.py65
2 files changed, 35 insertions, 47 deletions
diff --git a/django/contrib/gis/db/backends/spatialite/base.py b/django/contrib/gis/db/backends/spatialite/base.py
index f23ec53cf8..aea52f5777 100644
--- a/django/contrib/gis/db/backends/spatialite/base.py
+++ b/django/contrib/gis/db/backends/spatialite/base.py
@@ -38,22 +38,7 @@ class DatabaseWrapper(SQLiteDatabaseWrapper):
def _cursor(self):
if self.connection is None:
- ## The following is the same as in django.db.backends.sqlite3.base ##
- settings_dict = self.settings_dict
- if not settings_dict['NAME']:
- raise ImproperlyConfigured("Please fill out the database NAME in the settings module before using the database.")
- kwargs = {
- 'database': settings_dict['NAME'],
- 'detect_types': Database.PARSE_DECLTYPES | Database.PARSE_COLNAMES,
- }
- kwargs.update(settings_dict['OPTIONS'])
- self.connection = Database.connect(**kwargs)
- # Register extract, date_trunc, and regexp functions.
- self.connection.create_function("django_extract", 2, _sqlite_extract)
- self.connection.create_function("django_date_trunc", 2, _sqlite_date_trunc)
- self.connection.create_function("regexp", 2, _sqlite_regexp)
- self.connection.create_function("django_format_dtdelta", 5, _sqlite_format_dtdelta)
- connection_created.send(sender=self.__class__, connection=self)
+ self._sqlite_create_connection()
## From here on, customized for GeoDjango ##
diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py
index b5d38bb367..f5f0c644e9 100644
--- a/django/db/backends/sqlite3/base.py
+++ b/django/db/backends/sqlite3/base.py
@@ -230,39 +230,42 @@ class DatabaseWrapper(BaseDatabaseWrapper):
self.introspection = DatabaseIntrospection(self)
self.validation = BaseDatabaseValidation(self)
+ def _sqlite_create_connection(self):
+ settings_dict = self.settings_dict
+ if not settings_dict['NAME']:
+ from django.core.exceptions import ImproperlyConfigured
+ raise ImproperlyConfigured("Please fill out the database NAME in the settings module before using the database.")
+ kwargs = {
+ 'database': settings_dict['NAME'],
+ 'detect_types': Database.PARSE_DECLTYPES | Database.PARSE_COLNAMES,
+ }
+ kwargs.update(settings_dict['OPTIONS'])
+ # Always allow the underlying SQLite connection to be shareable
+ # between multiple threads. The safe-guarding will be handled at a
+ # higher level by the `BaseDatabaseWrapper.allow_thread_sharing`
+ # property. This is necessary as the shareability is disabled by
+ # default in pysqlite and it cannot be changed once a connection is
+ # opened.
+ if 'check_same_thread' in kwargs and kwargs['check_same_thread']:
+ warnings.warn(
+ 'The `check_same_thread` option was provided and set to '
+ 'True. It will be overriden with False. Use the '
+ '`DatabaseWrapper.allow_thread_sharing` property instead '
+ 'for controlling thread shareability.',
+ RuntimeWarning
+ )
+ kwargs.update({'check_same_thread': False})
+ self.connection = Database.connect(**kwargs)
+ # Register extract, date_trunc, and regexp functions.
+ self.connection.create_function("django_extract", 2, _sqlite_extract)
+ self.connection.create_function("django_date_trunc", 2, _sqlite_date_trunc)
+ self.connection.create_function("regexp", 2, _sqlite_regexp)
+ self.connection.create_function("django_format_dtdelta", 5, _sqlite_format_dtdelta)
+ connection_created.send(sender=self.__class__, connection=self)
+
def _cursor(self):
if self.connection is None:
- settings_dict = self.settings_dict
- if not settings_dict['NAME']:
- from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured("Please fill out the database NAME in the settings module before using the database.")
- kwargs = {
- 'database': settings_dict['NAME'],
- 'detect_types': Database.PARSE_DECLTYPES | Database.PARSE_COLNAMES,
- }
- kwargs.update(settings_dict['OPTIONS'])
- # Always allow the underlying SQLite connection to be shareable
- # between multiple threads. The safe-guarding will be handled at a
- # higher level by the `BaseDatabaseWrapper.allow_thread_sharing`
- # property. This is necessary as the shareability is disabled by
- # default in pysqlite and it cannot be changed once a connection is
- # opened.
- if 'check_same_thread' in kwargs and kwargs['check_same_thread']:
- warnings.warn(
- 'The `check_same_thread` option was provided and set to '
- 'True. It will be overriden with False. Use the '
- '`DatabaseWrapper.allow_thread_sharing` property instead '
- 'for controlling thread shareability.',
- RuntimeWarning
- )
- kwargs.update({'check_same_thread': False})
- self.connection = Database.connect(**kwargs)
- # Register extract, date_trunc, and regexp functions.
- self.connection.create_function("django_extract", 2, _sqlite_extract)
- self.connection.create_function("django_date_trunc", 2, _sqlite_date_trunc)
- self.connection.create_function("regexp", 2, _sqlite_regexp)
- self.connection.create_function("django_format_dtdelta", 5, _sqlite_format_dtdelta)
- connection_created.send(sender=self.__class__, connection=self)
+ self._sqlite_create_connection()
return self.connection.cursor(factory=SQLiteCursorWrapper)
def check_constraints(self, table_names=None):