Revert "Fixed #22401 -- Deprecated regular expression parsing of initial SQL in favor of installing sqlparse."

This reverts commit 071c933775.

This introduced a regression on MySQL and custom SQL is deprecated.
This commit is contained in:
Tim Graham 2014-04-16 21:03:22 -04:00
parent 66ec9ee441
commit 47927eb786
6 changed files with 13 additions and 48 deletions

View File

@ -10,7 +10,7 @@ from django.conf import settings
from django.core.management.base import CommandError from django.core.management.base import CommandError
from django.db import models, router from django.db import models, router
from django.utils import six from django.utils import six
from django.utils.deprecation import RemovedInDjango19Warning, RemovedInDjango20Warning from django.utils.deprecation import RemovedInDjango19Warning
def sql_create(app_config, style, connection): def sql_create(app_config, style, connection):
@ -155,27 +155,18 @@ def sql_all(app_config, style, connection):
def _split_statements(content): def _split_statements(content):
try: comment_re = re.compile(r"^((?:'[^']*'|[^'])*?)--.*$")
import sqlparse statements = []
except ImportError: statement = []
warnings.warn( for line in content.split("\n"):
"Providing intial SQL data works better with sqlparse installed " cleaned_line = comment_re.sub(r"\1", line).strip()
"and it will be required in Django 2.0.", RemovedInDjango20Warning if not cleaned_line:
) continue
comment_re = re.compile(r"^((?:'[^']*'|[^'])*?)--.*$") statement.append(cleaned_line)
statements = [] if cleaned_line.endswith(";"):
statement = [] statements.append(" ".join(statement))
for line in content.split("\n"): statement = []
cleaned_line = comment_re.sub(r"\1", line).strip() return statements
if not cleaned_line:
continue
statement.append(cleaned_line)
if cleaned_line.endswith(";"):
statements.append(" ".join(statement))
statement = []
return statements
else:
return sqlparse.split(content.strip())
def custom_sql_for_model(model, style, connection): def custom_sql_for_model(model, style, connection):

View File

@ -103,14 +103,6 @@ directories.
Providing initial SQL data Providing initial SQL data
========================== ==========================
.. deprecated:: 1.8
Historically this functionality has used regular expression parsing of the
initial SQL which is a bit buggy. This parsing is now deprecated in favor
of installing `sqlparse <https://pypi.python.org/pypi/sqlparse>`_; doing so
will be required for this functionality in Django 2.0. You can install it
using ``pip install sqlparse``.
Django provides a hook for passing the database arbitrary SQL that's executed Django provides a hook for passing the database arbitrary SQL that's executed
just after the CREATE TABLE statements when you run :djadmin:`migrate`. You can just after the CREATE TABLE statements when you run :djadmin:`migrate`. You can
use this hook to populate default records, or you could also create SQL use this hook to populate default records, or you could also create SQL

View File

@ -166,7 +166,6 @@ dependencies:
* memcached_, plus a :ref:`supported Python binding <memcached>` * memcached_, plus a :ref:`supported Python binding <memcached>`
* gettext_ (:ref:`gettext_on_windows`) * gettext_ (:ref:`gettext_on_windows`)
* selenium_ * selenium_
* sqlparse_
You can find these dependencies in `pip requirements files`_ inside the You can find these dependencies in `pip requirements files`_ inside the
``tests/requirements`` directory of the Django source tree and install them ``tests/requirements`` directory of the Django source tree and install them
@ -198,7 +197,6 @@ associated tests will be skipped.
.. _memcached: http://memcached.org/ .. _memcached: http://memcached.org/
.. _gettext: http://www.gnu.org/software/gettext/manual/gettext.html .. _gettext: http://www.gnu.org/software/gettext/manual/gettext.html
.. _selenium: https://pypi.python.org/pypi/selenium .. _selenium: https://pypi.python.org/pypi/selenium
.. _sqlparse: https://pypi.python.org/pypi/sqlparse
.. _pip requirements files: http://www.pip-installer.org/en/latest/cookbook.html#requirements-files .. _pip requirements files: http://www.pip-installer.org/en/latest/cookbook.html#requirements-files
Code coverage Code coverage

View File

@ -25,9 +25,6 @@ about each item can often be found in the release notes of two versions prior.
* Using an incorrect count of unpacked values in the ``for`` template tag * Using an incorrect count of unpacked values in the ``for`` template tag
will raise an exception rather than fail silently. will raise an exception rather than fail silently.
* The regular expression parsing of SQL initial data will be removed and
``sqlparse`` will be required for the feature.
.. _deprecation-removed-in-1.9: .. _deprecation-removed-in-1.9:
1.9 1.9

View File

@ -128,9 +128,6 @@ Management Commands
* :djadmin:`dumpdata` now has the option :djadminopt:`--output` which allows * :djadmin:`dumpdata` now has the option :djadminopt:`--output` which allows
specifying the file to which the serialized data is written. specifying the file to which the serialized data is written.
* :ref:`initial-sql` now works better if the `sqlparse
<https://pypi.python.org/pypi/sqlparse>`_ Python library is installed.
Models Models
^^^^^^ ^^^^^^
@ -281,12 +278,3 @@ Using an incorrect count of unpacked values in the :ttag:`for` template tag
Using an incorrect count of unpacked values in :ttag:`for` tag will raise an Using an incorrect count of unpacked values in :ttag:`for` tag will raise an
exception rather than fail silently in Django 2.0. exception rather than fail silently in Django 2.0.
Regular expression parsing of initial SQL
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The somewhat buggy regular expression logic used for parsing :ref:`SQL initial
data <initial-sql>` has been deprecated. Install `sqlparse
<https://pypi.python.org/pypi/sqlparse>`_ if you wish to use this feature.
Doing so will be required in Django 2.0 when the regular expression logic is
removed.

View File

@ -5,4 +5,3 @@ Pillow
PyYAML PyYAML
pytz > dev pytz > dev
selenium selenium
sqlparse