Commit 03d9566e authored by Alex Gaynor's avatar Alex Gaynor
Browse files

A large number of stylistic cleanups across django/db/

parent 0b69a755
Loading
Loading
Loading
Loading
+15 −7
Original line number Diff line number Diff line
import warnings

from django.core import signals
from django.db.utils import (DEFAULT_DB_ALIAS,
    DataError, OperationalError, IntegrityError, InternalError,
    ProgrammingError, NotSupportedError, DatabaseError,
    InterfaceError, Error,
    load_backend, ConnectionHandler, ConnectionRouter)
from django.db.utils import (DEFAULT_DB_ALIAS, DataError, OperationalError,
    IntegrityError, InternalError, ProgrammingError, NotSupportedError,
    DatabaseError, InterfaceError, Error, load_backend,
    ConnectionHandler, ConnectionRouter)
from django.utils.functional import cached_property

__all__ = ('backend', 'connection', 'connections', 'router', 'DatabaseError',
    'IntegrityError', 'DEFAULT_DB_ALIAS')

__all__ = [
    'backend', 'connection', 'connections', 'router', 'DatabaseError',
    'IntegrityError', 'InternalError', 'ProgrammingError', 'DataError',
    'NotSupportedError', 'Error', 'InterfaceError', 'OperationalError',
    'DEFAULT_DB_ALIAS'
]

connections = ConnectionHandler()

router = ConnectionRouter()


# `connection`, `DatabaseError` and `IntegrityError` are convenient aliases
# for backend bits.

@@ -70,6 +75,7 @@ class DefaultBackendProxy(object):

backend = DefaultBackendProxy()


def close_connection(**kwargs):
    warnings.warn(
        "close_connection is superseded by close_old_connections.",
@@ -83,12 +89,14 @@ def close_connection(**kwargs):
        transaction.abort(conn)
        connections[conn].close()


# Register an event to reset saved queries when a Django request is started.
def reset_queries(**kwargs):
    for conn in connections.all():
        conn.queries = []
signals.request_started.connect(reset_queries)


# Register an event to reset transaction state and close connections past
# their lifetime. NB: abort() doesn't do anything outside of a transaction.
def close_old_connections(**kwargs):
+1 −0
Original line number Diff line number Diff line
@@ -1167,6 +1167,7 @@ FieldInfo = namedtuple('FieldInfo',
    'name type_code display_size internal_size precision scale null_ok'
)


class BaseDatabaseIntrospection(object):
    """
    This class encapsulates all backend-specific introspection utilities
+4 −3
Original line number Diff line number Diff line
@@ -251,12 +251,13 @@ class BaseDatabaseCreation(object):
            r_col = model._meta.get_field(f.rel.field_name).column
            r_name = '%s_refs_%s_%s' % (
                col, r_col, self._digest(table, r_table))
            output.append('%s %s %s %s;' % \
                (style.SQL_KEYWORD('ALTER TABLE'),
            output.append('%s %s %s %s;' % (
                style.SQL_KEYWORD('ALTER TABLE'),
                style.SQL_TABLE(qn(table)),
                style.SQL_KEYWORD(self.connection.ops.drop_foreignkey_sql()),
                style.SQL_FIELD(qn(truncate_name(
                    r_name, self.connection.ops.max_name_length())))))
                    r_name, self.connection.ops.max_name_length())))
            ))
        del references_to_delete[model]
        return output

+12 −1
Original line number Diff line number Diff line
@@ -8,33 +8,43 @@ ImproperlyConfigured.
"""

from django.core.exceptions import ImproperlyConfigured
from django.db.backends import *
from django.db.backends import (BaseDatabaseOperations, BaseDatabaseClient,
    BaseDatabaseIntrospection, BaseDatabaseWrapper, BaseDatabaseFeatures,
    BaseDatabaseValidation)
from django.db.backends.creation import BaseDatabaseCreation


def complain(*args, **kwargs):
    raise ImproperlyConfigured("settings.DATABASES is improperly configured. "
                               "Please supply the ENGINE value. Check "
                               "settings documentation for more details.")


def ignore(*args, **kwargs):
    pass


class DatabaseError(Exception):
    pass


class IntegrityError(DatabaseError):
    pass


class DatabaseOperations(BaseDatabaseOperations):
    quote_name = complain


class DatabaseClient(BaseDatabaseClient):
    runshell = complain


class DatabaseCreation(BaseDatabaseCreation):
    create_test_db = ignore
    destroy_test_db = ignore


class DatabaseIntrospection(BaseDatabaseIntrospection):
    get_table_list = complain
    get_table_description = complain
@@ -42,6 +52,7 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
    get_indexes = complain
    get_key_columns = complain


class DatabaseWrapper(BaseDatabaseWrapper):
    operators = {}
    # Override the base class implementations with null
+10 −3
Original line number Diff line number Diff line
@@ -36,8 +36,9 @@ except ImportError:
    pytz = None

from django.conf import settings
from django.db import utils
from django.db.backends import *
from django.db import (utils, BaseDatabaseFeatures, BaseDatabaseOperations,
    BaseDatabaseWrapper)
from django.db.backends import util
from django.db.backends.mysql.client import DatabaseClient
from django.db.backends.mysql.creation import DatabaseCreation
from django.db.backends.mysql.introspection import DatabaseIntrospection
@@ -57,6 +58,7 @@ IntegrityError = Database.IntegrityError
# It's impossible to import datetime_or_None directly from MySQLdb.times
parse_datetime = conversions[FIELD_TYPE.DATETIME]


def parse_datetime_with_timezone_support(value):
    dt = parse_datetime(value)
    # Confirm that dt is naive before overwriting its tzinfo.
@@ -64,6 +66,7 @@ def parse_datetime_with_timezone_support(value):
        dt = dt.replace(tzinfo=timezone.utc)
    return dt


def adapt_datetime_with_timezone_support(value, conv):
    # Equivalent to DateTimeField.get_db_prep_value. Used only by raw SQL.
    if settings.USE_TZ:
@@ -98,6 +101,7 @@ django_conversions.update({
# http://dev.mysql.com/doc/refman/5.0/en/news.html .
server_version_re = re.compile(r'(\d{1,2})\.(\d{1,2})\.(\d{1,2})')


# MySQLdb-1.2.1 and newer automatically makes use of SHOW WARNINGS on
# MySQL-4.1 and newer, so the MysqlDebugWrapper is unnecessary. Since the
# point is to raise Warnings as exceptions, this can be done with the Python
@@ -148,6 +152,7 @@ class CursorWrapper(object):
    def __iter__(self):
        return iter(self.cursor)


class DatabaseFeatures(BaseDatabaseFeatures):
    empty_fetchmany_value = ()
    update_can_self_select = False
@@ -204,6 +209,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
        cursor.execute("SELECT 1 FROM mysql.time_zone LIMIT 1")
        return cursor.fetchone() is not None


class DatabaseOperations(BaseDatabaseOperations):
    compiler_module = "django.db.backends.mysql.compiler"

@@ -319,7 +325,7 @@ class DatabaseOperations(BaseDatabaseOperations):
        # Truncate already resets the AUTO_INCREMENT field from
        # MySQL version 5.0.13 onwards. Refs #16961.
        if self.connection.mysql_version < (5, 0, 13):
            return ["%s %s %s %s %s;" % \
            return ["%s %s %s %s %s;" %
                    (style.SQL_KEYWORD('ALTER'),
                    style.SQL_KEYWORD('TABLE'),
                    style.SQL_TABLE(self.quote_name(sequence['table'])),
@@ -373,6 +379,7 @@ class DatabaseOperations(BaseDatabaseOperations):
        items_sql = "(%s)" % ", ".join(["%s"] * len(fields))
        return "VALUES " + ", ".join([items_sql] * num_values)


class DatabaseWrapper(BaseDatabaseWrapper):
    vendor = 'mysql'
    operators = {
Loading