diff options
author | Tim Graham <timograham@gmail.com> | 2014-12-29 11:41:16 -0500 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2015-01-31 12:33:11 -0500 |
commit | 75303b01a9cc900eebf1f27ba0bc6508334242fc (patch) | |
tree | 2a5da4f8a8036b5f833caa776ecec20dd81774d4 /django/db/backends/mysql/introspection.py | |
parent | 64a899dc815f1a070dc7a7c22276e8bb41e46ea6 (diff) | |
download | django-75303b01a9cc900eebf1f27ba0bc6508334242fc.tar.gz |
Fixed #24245 -- Added introspection for database defaults.
Needed for tests for migrations handling of database defaults.
Diffstat (limited to 'django/db/backends/mysql/introspection.py')
-rw-r--r-- | django/db/backends/mysql/introspection.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/django/db/backends/mysql/introspection.py b/django/db/backends/mysql/introspection.py index dc78a00bfc..aa3c008d13 100644 --- a/django/db/backends/mysql/introspection.py +++ b/django/db/backends/mysql/introspection.py @@ -9,8 +9,8 @@ from django.utils.encoding import force_text from MySQLdb.constants import FIELD_TYPE -FieldInfo = namedtuple('FieldInfo', FieldInfo._fields + ('extra',)) - +FieldInfo = namedtuple('FieldInfo', FieldInfo._fields + ('extra', 'default')) +InfoLine = namedtuple('InfoLine', 'col_name data_type max_len num_prec num_scale extra column_default') foreign_key_re = re.compile(r"\sCONSTRAINT `[^`]*` FOREIGN KEY \(`([^`]*)`\) REFERENCES `([^`]*)` \(`([^`]*)`\)") @@ -61,9 +61,9 @@ class DatabaseIntrospection(BaseDatabaseIntrospection): # not visible length (#5725) # - precision and scale (for decimal fields) (#5014) # - auto_increment is not available in cursor.description - InfoLine = namedtuple('InfoLine', 'col_name data_type max_len num_prec num_scale extra') cursor.execute(""" - SELECT column_name, data_type, character_maximum_length, numeric_precision, numeric_scale, extra + SELECT column_name, data_type, character_maximum_length, numeric_precision, + numeric_scale, extra, column_default FROM information_schema.columns WHERE table_name = %s AND table_schema = DATABASE()""", [table_name]) field_info = {line[0]: InfoLine(*line) for line in cursor.fetchall()} @@ -80,7 +80,8 @@ class DatabaseIntrospection(BaseDatabaseIntrospection): to_int(field_info[col_name].num_prec) or line[4], to_int(field_info[col_name].num_scale) or line[5]) + (line[6],) - + (field_info[col_name].extra,))) + + (field_info[col_name].extra,) + + (field_info[col_name].column_default,))) ) return fields |