@@ -85,6 +85,7 @@ def __init__(self, reader, name):
85
85
self ._foreign_keys = []
86
86
self ._triggers = []
87
87
self ._columns = self ._load_columns ()
88
+ self ._comment = self ._load_table_comment ()
88
89
self ._load_indexes ()
89
90
self ._load_triggers ()
90
91
@@ -120,7 +121,7 @@ def _convert_type(self, data_type):
120
121
121
122
def _load_columns (self ):
122
123
fields = []
123
- for row in self .reader .db .query ('EXPLAIN `%s`' % self .name ):
124
+ for row in self .reader .db .query ('SHOW FULL COLUMNS FROM `%s`' % self .name ):
124
125
res = ()
125
126
for field in row :
126
127
if type (field ) == unicode :
@@ -132,17 +133,19 @@ def _load_columns(self):
132
133
length = length_match .group (1 ) if length_match else \
133
134
precision_match .group (1 ) if precision_match else None
134
135
name = res [0 ]
136
+ comment = res [8 ]
135
137
field_type = self ._convert_type (res [1 ])
136
138
desc = {
137
139
'name' : name ,
138
140
'table_name' : self .name ,
139
141
'type' : field_type ,
140
142
'length' : int (length ) if length else None ,
141
143
'decimals' : precision_match .group (2 ) if precision_match else None ,
142
- 'null' : res [2 ] == 'YES' or field_type .startswith ('enum' ) or field_type in ('date' , 'datetime' , 'timestamp' ),
143
- 'primary_key' : res [3 ] == 'PRI' ,
144
- 'auto_increment' : res [5 ] == 'auto_increment' ,
145
- 'default' : res [4 ] if not res [4 ] == 'NULL' else None ,
144
+ 'null' : res [3 ] == 'YES' or field_type .startswith ('enum' ) or field_type in ('date' , 'datetime' , 'timestamp' ),
145
+ 'primary_key' : res [4 ] == 'PRI' ,
146
+ 'auto_increment' : res [6 ] == 'auto_increment' ,
147
+ 'default' : res [5 ] if not res [5 ] == 'NULL' else None ,
148
+ 'comment' : comment ,
146
149
'select' : '`%s`' % name if not field_type .startswith ('enum' ) else
147
150
'CASE `%(name)s` WHEN "" THEN NULL ELSE `%(name)s` END' % {'name' : name },
148
151
}
@@ -154,6 +157,12 @@ def _load_columns(self):
154
157
155
158
return fields
156
159
160
+ def _load_table_comment (self ):
161
+ table_status = self .reader .db .query ('SHOW TABLE STATUS WHERE Name="%s"' % self .name , one = True )
162
+ comment = table_status [17 ]
163
+ return comment
164
+
165
+
157
166
def _load_indexes (self ):
158
167
explain = self .reader .db .query ('SHOW CREATE TABLE `%s`' % self .name , one = True )
159
168
explain = explain [1 ]
@@ -207,6 +216,10 @@ def name(self):
207
216
def columns (self ):
208
217
return self ._columns
209
218
219
+ @property
220
+ def comment (self ):
221
+ return self ._comment
222
+
210
223
@property
211
224
def indexes (self ):
212
225
return self ._indexes
0 commit comments