mirror of
https://github.com/django/django.git
synced 2024-12-31 21:46:05 +00:00
Refs #23919 -- Removed pysqlite support (it's Python 2 only).
This commit is contained in:
parent
289fc1bfa5
commit
1b06d5e6f6
@ -4,7 +4,7 @@ from ctypes.util import find_library
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
from django.db.backends.sqlite3.base import (
|
from django.db.backends.sqlite3.base import (
|
||||||
Database, DatabaseWrapper as SQLiteDatabaseWrapper, SQLiteCursorWrapper,
|
DatabaseWrapper as SQLiteDatabaseWrapper, SQLiteCursorWrapper,
|
||||||
)
|
)
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
|
|
||||||
@ -24,11 +24,6 @@ class DatabaseWrapper(SQLiteDatabaseWrapper):
|
|||||||
ops_class = SpatiaLiteOperations
|
ops_class = SpatiaLiteOperations
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
# Before we get too far, make sure pysqlite 2.5+ is installed.
|
|
||||||
if Database.version_info < (2, 5, 0):
|
|
||||||
raise ImproperlyConfigured('Only versions of pysqlite 2.5+ are '
|
|
||||||
'compatible with SpatiaLite and GeoDjango.')
|
|
||||||
|
|
||||||
# Trying to find the location of the SpatiaLite library.
|
# Trying to find the location of the SpatiaLite library.
|
||||||
# Here we are figuring out the path to the SpatiaLite library
|
# Here we are figuring out the path to the SpatiaLite library
|
||||||
# (`libspatialite`). If it's not in the system library path (e.g., it
|
# (`libspatialite`). If it's not in the system library path (e.g., it
|
||||||
@ -50,9 +45,9 @@ class DatabaseWrapper(SQLiteDatabaseWrapper):
|
|||||||
conn.enable_load_extension(True)
|
conn.enable_load_extension(True)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
raise ImproperlyConfigured(
|
raise ImproperlyConfigured(
|
||||||
'The pysqlite library does not support C extension loading. '
|
'SpatiaLite requires SQLite to be configured to allow '
|
||||||
'Both SQLite and pysqlite must be configured to allow '
|
'extension loading.'
|
||||||
'the loading of extensions to use SpatiaLite.')
|
)
|
||||||
# Loading the SpatiaLite library extension on the connection, and returning
|
# Loading the SpatiaLite library extension on the connection, and returning
|
||||||
# the created cursor.
|
# the created cursor.
|
||||||
cur = conn.cursor(factory=SQLiteCursorWrapper)
|
cur = conn.cursor(factory=SQLiteCursorWrapper)
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
"""
|
"""
|
||||||
SQLite3 backend for django.
|
SQLite3 backend for the sqlite3 module in the standard library.
|
||||||
|
|
||||||
Works with either the pysqlite2 module or the sqlite3 module in the
|
|
||||||
standard library.
|
|
||||||
"""
|
"""
|
||||||
import decimal
|
import decimal
|
||||||
import re
|
import re
|
||||||
import warnings
|
import warnings
|
||||||
|
from sqlite3 import dbapi2 as Database
|
||||||
|
|
||||||
import pytz
|
import pytz
|
||||||
|
|
||||||
@ -20,15 +18,6 @@ from django.utils.dateparse import (
|
|||||||
)
|
)
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
|
|
||||||
try:
|
|
||||||
try:
|
|
||||||
from pysqlite2 import dbapi2 as Database
|
|
||||||
except ImportError:
|
|
||||||
from sqlite3 import dbapi2 as Database
|
|
||||||
except ImportError as exc:
|
|
||||||
raise ImproperlyConfigured("Error loading either pysqlite2 or sqlite3 modules (tried in that order): %s" % exc)
|
|
||||||
|
|
||||||
# Some of these import sqlite3, so import them after checking if it's installed.
|
|
||||||
from .client import DatabaseClient # isort:skip
|
from .client import DatabaseClient # isort:skip
|
||||||
from .creation import DatabaseCreation # isort:skip
|
from .creation import DatabaseCreation # isort:skip
|
||||||
from .features import DatabaseFeatures # isort:skip
|
from .features import DatabaseFeatures # isort:skip
|
||||||
|
@ -61,7 +61,7 @@ Database Library Requirements Supported Versions Notes
|
|||||||
PostgreSQL GEOS, GDAL, PROJ.4, PostGIS 9.3+ Requires PostGIS.
|
PostgreSQL GEOS, GDAL, PROJ.4, PostGIS 9.3+ Requires PostGIS.
|
||||||
MySQL GEOS, GDAL 5.5+ Not OGC-compliant; :ref:`limited functionality <mysql-spatial-limitations>`.
|
MySQL GEOS, GDAL 5.5+ Not OGC-compliant; :ref:`limited functionality <mysql-spatial-limitations>`.
|
||||||
Oracle GEOS, GDAL 11.2+ XE not supported.
|
Oracle GEOS, GDAL 11.2+ XE not supported.
|
||||||
SQLite GEOS, GDAL, PROJ.4, SpatiaLite 3.6.+ Requires SpatiaLite 4.0+, pysqlite2 2.5+
|
SQLite GEOS, GDAL, PROJ.4, SpatiaLite 3.6.+ Requires SpatiaLite 4.0+
|
||||||
================== ============================== ================== =========================================
|
================== ============================== ================== =========================================
|
||||||
|
|
||||||
See also `this comparison matrix`__ on the OSGeo Wiki for
|
See also `this comparison matrix`__ on the OSGeo Wiki for
|
||||||
@ -268,8 +268,8 @@ KyngChaos packages
|
|||||||
William Kyngesburye provides a number of `geospatial library binary packages`__
|
William Kyngesburye provides a number of `geospatial library binary packages`__
|
||||||
that make it simple to get GeoDjango installed on OS X without compiling
|
that make it simple to get GeoDjango installed on OS X without compiling
|
||||||
them from source. However, the `Apple Developer Tools`_ are still necessary
|
them from source. However, the `Apple Developer Tools`_ are still necessary
|
||||||
for compiling the Python database adapters :ref:`psycopg2_kyngchaos` (for PostGIS)
|
for compiling the Python database adapters :ref:`psycopg2_kyngchaos` (for
|
||||||
and `pysqlite2 <https://pypi.python.org/pypi/pysqlite>`_ (for SpatiaLite).
|
PostGIS).
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
@ -663,18 +663,6 @@ substring filtering.
|
|||||||
|
|
||||||
.. _documented at sqlite.org: https://www.sqlite.org/faq.html#q18
|
.. _documented at sqlite.org: https://www.sqlite.org/faq.html#q18
|
||||||
|
|
||||||
.. _using-newer-versions-of-pysqlite:
|
|
||||||
|
|
||||||
Using newer versions of the SQLite DB-API 2.0 driver
|
|
||||||
----------------------------------------------------
|
|
||||||
|
|
||||||
Django will use a ``pysqlite2`` module in preference to ``sqlite3`` as shipped
|
|
||||||
with the Python standard library if it finds one is available.
|
|
||||||
|
|
||||||
This provides the ability to upgrade both the DB-API 2.0 interface or SQLite 3
|
|
||||||
itself to versions newer than the ones included with your particular Python
|
|
||||||
binary distribution, if needed.
|
|
||||||
|
|
||||||
"Database is locked" errors
|
"Database is locked" errors
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user