summaryrefslogtreecommitdiff
path: root/django/db/backends/mysql/introspection.py
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2014-12-29 11:41:16 -0500
committerTim Graham <timograham@gmail.com>2015-01-31 12:33:11 -0500
commit75303b01a9cc900eebf1f27ba0bc6508334242fc (patch)
tree2a5da4f8a8036b5f833caa776ecec20dd81774d4 /django/db/backends/mysql/introspection.py
parent64a899dc815f1a070dc7a7c22276e8bb41e46ea6 (diff)
downloaddjango-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.py11
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