如何使用SQLAlchemy在mysql中向表或列添加注释?

时间:2016-08-01 23:58:49

标签: mysql sqlalchemy flask-sqlalchemy

我想添加一个tabble和列创建的注释。

所以我将doc参数添加到SQLAlchemy Column类的构造函数中。

但是不要在列中添加注释。

class Notice(db.Model):
    __tablename__ = "tb_notice"
    __table_args__ = {'mysql_engine': 'MyISAM'}

    seqno = db.Column(db.Integer, primary_key=True, autoincrement=True, doc="seqno")
    title = db.Column(db.String(200), nullable=False, doc="notice title")
    detail = db.Column(db.TEXT, nullable=True, doc="notice detail ")

我想知道如何添加表的注释。

3 个答案:

答案 0 :(得分:7)

答案 1 :(得分:2)

根据doc的{​​{3}}:

doc¶–可选字符串,可由ORM使用或类似于Python端的文档属性。此属性不呈现SQL注释;为此,请使用Column.comment参数。

还有comment参数:

comment¶–可选字符串,将在表创建时呈现SQL注释。

请注意,comment的1.2版中添加了SQlAlchemy

要在表中添加注释,只需将其他comment属性(根据Tablewebsite)传递到__table_args__字典中。在版本1.2中也添加了

代码将是这样的:

class Notice(db.Model):
    
    __tablename__ = "tb_notice"
    __table_args__ = {
        'mysql_engine': 'MyISAM',
        'comment': 'Notice table'
    }

    seqno = db.Column(db.Integer, primary_key=True, autoincrement=True, doc="seqno",
                      comment='Integer representing the sequence number')
    title = db.Column(db.String(200), nullable=False, doc="notice title",
                      comment='Title of the notice, represented as a string')
    detail = db.Column(db.TEXT, nullable=True, doc="notice detail",
                       comment='Notice detail description')

doc属性充当您的类的文档字符串:

print(Notice.title.__doc__)

将输出: notice title

现在相应的SQL表创建语句将是:

CREATE TABLE `tb_notice` (
  `seqno` int(11) NOT NULL COMMENT 'Integer representing the sequence number',
  `title` varchar(200) NOT NULL COMMENT 'Title of the notice, represented as a string',
  `detail` text COMMENT 'Notice detail description'
) ENGINE=MyISAM DEFAULT CHARSET=utf32 COMMENT='Notice table';

您可以看到注释已正确添加到表和列中。

答案 2 :(得分:1)

您可以在新的1.2版本中

class Notice(db.Model):
    __tablename__ = "tb_notice"
    __table_args__ = {
        'mysql_engine': 'MyISAM'
        'comment': 'yeah comment'
    }