Commit fa8f0cb2 authored by Alex Gaynor's avatar Alex Gaynor
Browse files

When looking for django tables which exist, query for all tables once, not once *per table*.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@14402 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent aa951eb8
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -9,7 +9,6 @@ from django.core.management.sql import sql_flush, emit_post_sync_signal
from django.utils.importlib import import_module



class Command(NoArgsCommand):
    option_list = NoArgsCommand.option_list + (
        make_option('--noinput', action='store_false', dest='interactive', default=True,
+3 −1
Original line number Diff line number Diff line
@@ -111,7 +111,9 @@ def sql_flush(style, connection, only_django=False):
        tables = connection.introspection.django_table_names(only_existing=True)
    else:
        tables = connection.introspection.table_names()
    statements = connection.ops.sql_flush(style, tables, connection.introspection.sequence_list())
    statements = connection.ops.sql_flush(
        style, tables, connection.introspection.sequence_list()
    )
    return statements

def sql_custom(app, style, connection):
+6 −1
Original line number Diff line number Diff line
@@ -615,7 +615,12 @@ class BaseDatabaseIntrospection(object):
                tables.add(model._meta.db_table)
                tables.update([f.m2m_db_table() for f in model._meta.local_many_to_many])
        if only_existing:
            tables = [t for t in tables if self.table_name_converter(t) in self.table_names()]
            existing_tables = self.table_names()
            tables = [
                t
                for t in tables
                if self.table_name_converter(t) in existing_tables
            ]
        return tables

    def installed_models(self, tables):
+1 −2
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@ from django.db.backends import BaseDatabaseIntrospection
# This light wrapper "fakes" a dictionary interface, because some SQLite data
# types include variables in them -- e.g. "varchar(30)" -- and can't be matched
# as a simple dictionary lookup.
class FlexibleFieldLookupDict:
class FlexibleFieldLookupDict(object):
    # Maps SQL types to Django Field types. Some of the SQL types have multiple
    # entries here because SQLite allows for anything and doesn't normalize the
    # field type; it uses whatever was given.
@@ -138,4 +138,3 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
                 'null_ok': not field[3],
                 'pk': field[5]     # undocumented
                 } for field in cursor.fetchall()]