Fixed #25175 -- Renamed the postgresql_psycopg2 database backend to postgresql.

This commit is contained in:
Caio Ariede 2015-08-05 11:08:56 -03:00 committed by Tim Graham
parent 8656cfc4e0
commit ec9004728e
25 changed files with 42 additions and 25 deletions

View File

@ -1,5 +1,5 @@
from django.db.backends.base.base import NO_DB_ALIAS
from django.db.backends.postgresql_psycopg2.base import \
from django.db.backends.postgresql.base import \
DatabaseWrapper as Psycopg2DatabaseWrapper
from .features import DatabaseFeatures

View File

@ -1,5 +1,5 @@
from django.contrib.gis.db.backends.base.features import BaseSpatialFeatures
from django.db.backends.postgresql_psycopg2.features import \
from django.db.backends.postgresql.features import \
DatabaseFeatures as Psycopg2DatabaseFeatures

View File

@ -1,6 +1,5 @@
from django.contrib.gis.gdal import OGRGeomType
from django.db.backends.postgresql_psycopg2.introspection import \
DatabaseIntrospection
from django.db.backends.postgresql.introspection import DatabaseIntrospection
class GeoIntrospectionError(Exception):

View File

@ -11,8 +11,7 @@ from django.contrib.gis.db.backends.utils import SpatialOperator
from django.contrib.gis.geometry.backend import Geometry
from django.contrib.gis.measure import Distance
from django.core.exceptions import ImproperlyConfigured
from django.db.backends.postgresql_psycopg2.operations import \
DatabaseOperations
from django.db.backends.postgresql.operations import DatabaseOperations
from django.db.utils import ProgrammingError
from django.utils.functional import cached_property

View File

@ -1,4 +1,4 @@
from django.db.backends.postgresql_psycopg2.schema import DatabaseSchemaEditor
from django.db.backends.postgresql.schema import DatabaseSchemaEditor
class PostGISSchemaEditor(DatabaseSchemaEditor):

View File

@ -104,7 +104,14 @@ class DatabaseErrorWrapper(object):
def load_backend(backend_name):
# Look for a fully qualified database backend name
"""
Return a database backend's "base" module given a fully qualified database
backend name, or raise an error if it doesn't exist.
"""
# This backend was renamed in Django 1.9.
if backend_name == 'django.db.backends.postgresql_psycopg2':
backend_name = 'django.db.backends.postgresql'
try:
return import_module('%s.base' % backend_name)
except ImportError as e_user:
@ -114,7 +121,8 @@ def load_backend(backend_name):
try:
builtin_backends = [
name for _, name, ispkg in pkgutil.iter_modules([npath(backend_dir)])
if ispkg and name not in {'base', 'dummy'}]
if ispkg and name not in {'base', 'dummy', 'postgresql_psycopg2'}
]
except EnvironmentError:
builtin_backends = []
if backend_name not in ['django.db.backends.%s' % b for b in

View File

@ -26,7 +26,7 @@ settings:
* :setting:`ENGINE <DATABASE-ENGINE>` -- Either
``'django.db.backends.sqlite3'``,
``'django.db.backends.postgresql_psycopg2'``,
``'django.db.backends.postgresql'``,
``'django.db.backends.mysql'``, or
``'django.db.backends.oracle'``. Other backends are :ref:`also available
<third-party-notes>`.

View File

@ -1512,7 +1512,7 @@ make the call non-blocking. If a conflicting lock is already acquired by
another transaction, :exc:`~django.db.DatabaseError` will be raised when the
queryset is evaluated.
Currently, the ``postgresql_psycopg2``, ``oracle``, and ``mysql`` database
Currently, the ``postgresql``, ``oracle``, and ``mysql`` database
backends support ``select_for_update()``. However, MySQL has no support for the
``nowait`` argument. Obviously, users of external third-party backends should
check with their backend's documentation for specifics in those cases.

View File

@ -459,7 +459,7 @@ other database types. This example is for PostgreSQL::
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'mydatabaseuser',
'PASSWORD': 'mypassword',
@ -500,14 +500,19 @@ Default: ``''`` (Empty string)
The database backend to use. The built-in database backends are:
* ``'django.db.backends.postgresql_psycopg2'``
* ``'django.db.backends.postgresql'``
* ``'django.db.backends.mysql'``
* ``'django.db.backends.sqlite3'``
* ``'django.db.backends.oracle'``
You can use a database backend that doesn't ship with Django by setting
``ENGINE`` to a fully-qualified path (i.e.
``mypackage.backends.whatever``).
``ENGINE`` to a fully-qualified path (i.e. ``mypackage.backends.whatever``).
.. versionchanged:: 1.9
The ``django.db.backends.postgresql`` backend is named
``django.db.backends.postgresql_psycopg2`` in older releases. For backwards
compatibility, the old name still works in newer versions.
.. setting:: HOST
@ -657,8 +662,7 @@ The character set encoding used to create the test database. The value of this
string is passed directly through to the database, so its format is
backend-specific.
Supported for the PostgreSQL_ (``postgresql_psycopg2``) and MySQL_ (``mysql``)
backends.
Supported by the PostgreSQL_ (``postgresql``) and MySQL_ (``mysql``) backends.
.. _PostgreSQL: http://www.postgresql.org/docs/current/static/multibyte.html
.. _MySQL: http://dev.mysql.com/doc/refman/5.6/en/charset-database.html

View File

@ -625,7 +625,7 @@ Arguments sent with this signal:
``sender``
The database wrapper class -- i.e.
``django.db.backends.postgresql_psycopg2.DatabaseWrapper`` or
``django.db.backends.postgresql.DatabaseWrapper`` or
``django.db.backends.mysql.DatabaseWrapper``, etc.
``connection``

View File

@ -578,6 +578,13 @@ Validators
* Added :func:`~django.core.validators.validate_unicode_slug` to validate slugs
that may contain Unicode characters.
Database backends
^^^^^^^^^^^^^^^^^
* The PostgreSQL backend (``django.db.backends.postgresql_psycopg2``) is also
available as ``django.db.backends.postgresql``. The old name will continue to
be available for backwards compatibility.
Backwards incompatible changes in 1.9
=====================================

View File

@ -29,7 +29,7 @@ databases -- a default PostgreSQL database and a MySQL database called
DATABASES = {
'default': {
'NAME': 'app_data',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'ENGINE': 'django.db.backends.postgresql',
'USER': 'postgres_user',
'PASSWORD': 's3krit'
},

View File

@ -9,7 +9,7 @@ class TestLoadBackend(SimpleTestCase):
msg = (
"'foo' isn't an available database backend.\n"
"Try using 'django.db.backends.XXX', where XXX is one of:\n"
" 'mysql', 'oracle', 'postgresql_psycopg2', 'sqlite3'\n"
" 'mysql', 'oracle', 'postgresql', 'sqlite3'\n"
"Error was: No module named %s"
) % "foo.base" if six.PY2 else "'foo'"
with self.assertRaisesMessage(ImproperlyConfigured, msg):

View File

@ -18,7 +18,7 @@ from django.db import (
reset_queries, transaction,
)
from django.db.backends.base.base import BaseDatabaseWrapper
from django.db.backends.postgresql_psycopg2 import version as pg_version
from django.db.backends.postgresql import version as pg_version
from django.db.backends.signals import connection_created
from django.db.backends.utils import CursorWrapper, format_number
from django.db.models import Avg, StdDev, Sum, Variance
@ -313,7 +313,7 @@ class PostgreSQLTests(TestCase):
self.assertEqual(a[0], b[0])
def test_lookup_cast(self):
from django.db.backends.postgresql_psycopg2.operations import DatabaseOperations
from django.db.backends.postgresql.operations import DatabaseOperations
do = DatabaseOperations(connection=None)
for lookup in ('iexact', 'contains', 'icontains', 'startswith',
@ -321,8 +321,8 @@ class PostgreSQLTests(TestCase):
self.assertIn('::text', do.lookup_cast(lookup))
def test_correct_extraction_psycopg2_version(self):
from django.db.backends.postgresql_psycopg2.base import psycopg2_version
version_path = 'django.db.backends.postgresql_psycopg2.base.Database.__version__'
from django.db.backends.postgresql.base import psycopg2_version
version_path = 'django.db.backends.postgresql.base.Database.__version__'
with mock.patch(version_path, '2.6.9'):
self.assertEqual(psycopg2_version(), (2, 6, 9))

View File

@ -4,7 +4,7 @@ from __future__ import unicode_literals
import locale
import os
from django.db.backends.postgresql_psycopg2.client import DatabaseClient
from django.db.backends.postgresql.client import DatabaseClient
from django.test import SimpleTestCase, mock
from django.utils import six
from django.utils.encoding import force_bytes, force_str