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:
parent
66ec9ee441
commit
47927eb786
|
@ -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):
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.
|
|
||||||
|
|
|
@ -5,4 +5,3 @@ Pillow
|
||||||
PyYAML
|
PyYAML
|
||||||
pytz > dev
|
pytz > dev
|
||||||
selenium
|
selenium
|
||||||
sqlparse
|
|
||||||
|
|
Loading…
Reference in New Issue