diff options
author | kimsoungryoul <kimsoungryoul@gmail.com> | 2022-10-16 14:59:39 +0900 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-12-28 06:28:07 +0100 |
commit | 78f163a4fb3937aca2e71786fbdd51a0ef39629e (patch) | |
tree | 7e61c2f8d96b9dab60e317d3483460064327d701 /django/db/backends/mysql/introspection.py | |
parent | 68ef274bc505cd44f305c03cbf84cf08826200a8 (diff) | |
download | django-78f163a4fb3937aca2e71786fbdd51a0ef39629e.tar.gz |
Fixed #18468 -- Added support for comments on columns and tables.
Thanks Jared Chung, Tom Carrick, David Smith, Nick Pope, and Mariusz
Felisiak for reviews.
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
Co-authored-by: Nick Pope <nick@nickpope.me.uk>
Diffstat (limited to 'django/db/backends/mysql/introspection.py')
-rw-r--r-- | django/db/backends/mysql/introspection.py | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/django/db/backends/mysql/introspection.py b/django/db/backends/mysql/introspection.py index b8228f3c84..a5ebf37112 100644 --- a/django/db/backends/mysql/introspection.py +++ b/django/db/backends/mysql/introspection.py @@ -5,18 +5,20 @@ from MySQLdb.constants import FIELD_TYPE from django.db.backends.base.introspection import BaseDatabaseIntrospection from django.db.backends.base.introspection import FieldInfo as BaseFieldInfo -from django.db.backends.base.introspection import TableInfo +from django.db.backends.base.introspection import TableInfo as BaseTableInfo from django.db.models import Index from django.utils.datastructures import OrderedSet FieldInfo = namedtuple( - "FieldInfo", BaseFieldInfo._fields + ("extra", "is_unsigned", "has_json_constraint") + "FieldInfo", + BaseFieldInfo._fields + ("extra", "is_unsigned", "has_json_constraint", "comment"), ) InfoLine = namedtuple( "InfoLine", "col_name data_type max_len num_prec num_scale extra column_default " - "collation is_unsigned", + "collation is_unsigned comment", ) +TableInfo = namedtuple("TableInfo", BaseTableInfo._fields + ("comment",)) class DatabaseIntrospection(BaseDatabaseIntrospection): @@ -68,9 +70,18 @@ class DatabaseIntrospection(BaseDatabaseIntrospection): def get_table_list(self, cursor): """Return a list of table and view names in the current database.""" - cursor.execute("SHOW FULL TABLES") + cursor.execute( + """ + SELECT + table_name, + table_type, + table_comment + FROM information_schema.tables + WHERE table_schema = DATABASE() + """ + ) return [ - TableInfo(row[0], {"BASE TABLE": "t", "VIEW": "v"}.get(row[1])) + TableInfo(row[0], {"BASE TABLE": "t", "VIEW": "v"}.get(row[1]), row[2]) for row in cursor.fetchall() ] @@ -128,7 +139,8 @@ class DatabaseIntrospection(BaseDatabaseIntrospection): CASE WHEN column_type LIKE '%% unsigned' THEN 1 ELSE 0 - END AS is_unsigned + END AS is_unsigned, + column_comment FROM information_schema.columns WHERE table_name = %s AND table_schema = DATABASE() """, @@ -159,6 +171,7 @@ class DatabaseIntrospection(BaseDatabaseIntrospection): info.extra, info.is_unsigned, line[0] in json_constraints, + info.comment, ) ) return fields |