mirror of
https://github.com/django/django.git
synced 2025-02-20 14:24:27 +00:00
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
This commit is contained in:
parent
aa951eb8ea
commit
fa8f0cb2d8
@ -9,7 +9,6 @@ from django.core.management.sql import sql_flush, emit_post_sync_signal
|
|||||||
from django.utils.importlib import import_module
|
from django.utils.importlib import import_module
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Command(NoArgsCommand):
|
class Command(NoArgsCommand):
|
||||||
option_list = NoArgsCommand.option_list + (
|
option_list = NoArgsCommand.option_list + (
|
||||||
make_option('--noinput', action='store_false', dest='interactive', default=True,
|
make_option('--noinput', action='store_false', dest='interactive', default=True,
|
||||||
|
@ -111,7 +111,9 @@ def sql_flush(style, connection, only_django=False):
|
|||||||
tables = connection.introspection.django_table_names(only_existing=True)
|
tables = connection.introspection.django_table_names(only_existing=True)
|
||||||
else:
|
else:
|
||||||
tables = connection.introspection.table_names()
|
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
|
return statements
|
||||||
|
|
||||||
def sql_custom(app, style, connection):
|
def sql_custom(app, style, connection):
|
||||||
|
@ -615,7 +615,12 @@ class BaseDatabaseIntrospection(object):
|
|||||||
tables.add(model._meta.db_table)
|
tables.add(model._meta.db_table)
|
||||||
tables.update([f.m2m_db_table() for f in model._meta.local_many_to_many])
|
tables.update([f.m2m_db_table() for f in model._meta.local_many_to_many])
|
||||||
if only_existing:
|
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
|
return tables
|
||||||
|
|
||||||
def installed_models(self, tables):
|
def installed_models(self, tables):
|
||||||
|
@ -4,7 +4,7 @@ from django.db.backends import BaseDatabaseIntrospection
|
|||||||
# This light wrapper "fakes" a dictionary interface, because some SQLite data
|
# 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
|
# types include variables in them -- e.g. "varchar(30)" -- and can't be matched
|
||||||
# as a simple dictionary lookup.
|
# as a simple dictionary lookup.
|
||||||
class FlexibleFieldLookupDict:
|
class FlexibleFieldLookupDict(object):
|
||||||
# Maps SQL types to Django Field types. Some of the SQL types have multiple
|
# 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
|
# entries here because SQLite allows for anything and doesn't normalize the
|
||||||
# field type; it uses whatever was given.
|
# field type; it uses whatever was given.
|
||||||
@ -138,4 +138,3 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
|
|||||||
'null_ok': not field[3],
|
'null_ok': not field[3],
|
||||||
'pk': field[5] # undocumented
|
'pk': field[5] # undocumented
|
||||||
} for field in cursor.fetchall()]
|
} for field in cursor.fetchall()]
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user