Required sqlparse for SQL splitting per deprecation timeline.

This commit is contained in:
Tim Graham 2014-12-26 14:48:44 -05:00
parent 4aa089a9a9
commit b845951fd4
3 changed files with 7 additions and 34 deletions

View File

@ -1,7 +1,5 @@
from __future__ import unicode_literals
import re
from django.apps import apps
from django.core.management.base import CommandError
from django.db import models, router
@ -168,22 +166,6 @@ def sql_all(app_config, style, connection):
)
def _split_statements(content):
# Private API only called from code that emits a RemovedInDjango19Warning.
comment_re = re.compile(r"^((?:'[^']*'|[^'])*?)--.*$")
statements = []
statement = []
for line in content.split("\n"):
cleaned_line = comment_re.sub(r"\1", line).strip()
if not cleaned_line:
continue
statement.append(cleaned_line)
if cleaned_line.endswith(";"):
statements.append(" ".join(statement))
statement = []
return statements
def emit_pre_migrate_signal(verbosity, interactive, db):
# Emit the pre_migrate signal for every application.
for app_config in apps.get_app_configs():

View File

@ -1,13 +1,12 @@
import datetime
import decimal
from importlib import import_module
import warnings
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured
from django.db.backends import utils
from django.utils import six, timezone
from django.utils.dateparse import parse_duration
from django.utils.deprecation import RemovedInDjango19Warning
from django.utils.encoding import force_text
@ -255,7 +254,7 @@ class BaseDatabaseOperations(object):
"""
return 'DEFAULT'
def prepare_sql_script(self, sql, _allow_fallback=False):
def prepare_sql_script(self, sql):
"""
Takes a SQL script that may contain multiple lines and returns a list
of statements to feed to successive cursor.execute() calls.
@ -264,21 +263,13 @@ class BaseDatabaseOperations(object):
cursor.execute() call and PEP 249 doesn't talk about this use case,
the default implementation is conservative.
"""
# Remove _allow_fallback and keep only 'return ...' in Django 1.9.
try:
# This import must stay inside the method because it's optional.
import sqlparse
except ImportError:
if _allow_fallback:
# Without sqlparse, fall back to the legacy (and buggy) logic.
warnings.warn(
"Providing initial SQL data on a %s database will require "
"sqlparse in Django 1.9." % self.connection.vendor,
RemovedInDjango19Warning)
from django.core.management.sql import _split_statements
return _split_statements(sql)
else:
raise
raise ImproperlyConfigured(
"sqlparse is required if you don't split your SQL "
"statements manually."
)
else:
return [sqlparse.format(statement, strip_comments=True)
for statement in sqlparse.split(sql) if statement]

View File

@ -86,7 +86,7 @@ class DatabaseOperations(BaseDatabaseOperations):
def no_limit_value(self):
return None
def prepare_sql_script(self, sql, _allow_fallback=False):
def prepare_sql_script(self, sql):
return [sql]
def quote_name(self, name):