首页 > 数据库 >Django InspectDB 缺少mysql/mariadb的注释问题。

Django InspectDB 缺少mysql/mariadb的注释问题。

时间:2022-09-29 18:45:47浏览次数:53  
标签:comment info name extra column InspectDB Django mysql line

我的是3.13.1。
修改2处文件。

1.django\core\management\commands\inspectdb.py
2.django\db\backends\mysql\introspection.py

1.inspectdb.py

@@ -213,6 +213,8 @@ class Command(BaseCommand):
                         field_desc += ", ".join(
                             "%s=%r" % (k, v) for k, v in extra_params.items()
                         )
+                    if row.column_comment:
+                        field_desc += f", verbose_name='{row.column_comment}'"
                     field_desc += ")"
                     if comment_notes:
                         field_desc += "  # " + " ".join(comment_notes)

2.introspection.py

@@ -10,11 +10,11 @@ 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 + ("column_comment", "extra", "is_unsigned", "has_json_constraint")
 )
 InfoLine = namedtuple(
     "InfoLine",
-    "col_name data_type max_len num_prec num_scale extra column_default "
+    "col_name data_type max_len num_prec num_scale extra column_default column_comment "
     "collation is_unsigned",
 )
 
@@ -116,11 +116,12 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
         #   not visible length (#5725)
         # - precision and scale (for decimal fields) (#5014)
         # - auto_increment is not available in cursor.description
+        # numeric_precision, numeric_scale, extra, column_default,
         cursor.execute(
             """
             SELECT
                 column_name, data_type, character_maximum_length,
-                numeric_precision, numeric_scale, extra, column_default,
+                numeric_precision, numeric_scale, extra, column_default, column_comment,
                 CASE
                     WHEN collation_name = %s THEN NULL
                     ELSE collation_name
@@ -134,7 +135,8 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
             """,
             [default_column_collation, table_name],
         )
-        field_info = {line[0]: InfoLine(*line) for line in cursor.fetchall()}
+        fetchall = cursor.fetchall()
+        field_info = {line[0]: InfoLine(*line) for line in fetchall}
 
         cursor.execute(
             "SELECT * FROM %s LIMIT 1" % self.connection.ops.quote_name(table_name)
@@ -155,6 +157,7 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
                     line[6],
                     info.column_default,
                     info.collation,
+                    info.column_comment,
                     info.extra,
                     info.is_unsigned,
                     line[0] in json_constraints,

标签:comment,info,name,extra,column,InspectDB,Django,mysql,line
From: https://www.cnblogs.com/wgf4242/p/16742607.html

相关文章

  • 从结算业务 深入理解 并发,mysql 乐观锁,可重复读
    从结算业务深入理解并发,mysql乐观锁,可重复读结算一般就是,把一些未结算的订单金额,周期性的结算到对应的账户表里面去。一般就是通过定时任务分批跑,比如每个......
  • MySQL拷贝表的几种方式
    Mysql拷贝表拷贝结构-添加数据##拷贝结构CREATETABLEnewTableLIKEoldTable;##添加数据INSERTINTOnewTableSELECT*FROMoldTable;1234拷贝结构和数据CREATETAB......
  • mysql8日志占满磁盘解决办法
    SHOWBINARYLOGS;setglobalbinlog_expire_logs_seconds=60*60*24;showvariableslike'%expire%';flushprivileges;永久改动可以找到/etc/mysql/my.cnf(Ubunt......
  • Docker MySql8 创建、删除、授权用户
    目录DockerMySql8创建、删除、授权用户1、登录MySql82、用户操作2.1、查看用户2.2、创建本地用户2.3、创建外网可访问用户2.4、修改用户2.5、删除用户3、操作用户权限3.1......
  • Django项目中的数据库引擎的修改注意点以及级联删除的设置
    2022-09-29问题描述:在“setting.py”的配置文件中修改数据库引擎中,将系统默认的"sqlite3"后缀改为了“sql”。出现问题。原因分析:  问题查看: 修改后:  ----......
  • Mysql取整函数
    Mysql取整函数1.round四舍五入取整round(s,n):对s四舍五入保留n位小数,n取值可为正、负、零.如四舍五入到整数位,则n取零.2.ceil向上取整ceil(s):返回比s大的最小整数3.floo......
  • Mysql主从复制与读写分离
    参考:https://www.bilibili.com/video/BV13a411q753?p=172&vd_source=c85b4a015a69e82ad4f202bd9b87697f主从复制介绍  配置-前置条件 -主库Master找不到的可......
  • MYSQL连接字符串参数解析
    Server,host,datasource,datasource,address,addr,networkaddress:数据库位置(以上任何关键字均可)Database,initialcatalog:数据库名Port:      socket端口......
  • docker配置mysql主从复制
    1、新建主服务器容器实例3310dockerrun-p3310:3306--namemysql-master\-v/mydata/mysql-master/log:/var/log/mysql\-v/mydata/mysql-master/data:/var/lib/m......
  • MySQL查询 7:连接查询
    当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回mysql支持三种类型的连接查询,分别为:内连接查询:查询的结果为两个表匹配到的数据左连接查......