文章内容

2022/8/29 17:57:59,作 者: 黄兵

SQLAlchemy 如何向列增加注释

最近在修改模型的时候,有一些字段不是很好理解,需要增加注释,原来使用的是 doc 关键字,关于 SQLAlchemy doc 的解释如下:

ORM 可以使用的可选字符串,或者类似于 Python 端的文档属性。该属性不呈现 SQL 注释

也就是说,doc 参数之后,可能在文档中呈现这些内容,但是在生成的 SQL 中,并不包含这些内容。

下面是一个示例:

public = db.Column(db.Boolean, doc='用户不续费之后变成公共资源')

我们可以使用 comment 参数,来生成有注释的 sql 语句,关于 comment 的解释如下:

将在表创建时呈现 SQL 注释的可选字符串

同时我们需要注意:在 SQLAlchemy 1.2 版本之后,才增加了 comment 参数。

如果我们需要为表格增加注释,直接增加 comment 参数就可以了,为数据表增加注释,我们可以使用 __table_args__,下面是示例:

class Order(db.Model):
__tablename__ = 'orders'
__table_args__ = {'comment': '用户订单'}
id = db.Column(db.Integer, primary_key=True)
plant_id = db.Column(db.Integer, db.ForeignKey('plants.id'))
user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
duration = db.Column(db.Integer, doc='购买时长,月为单位', comment='购买时长,单位:月')

这样就实现了表注释和行注释。

最后我们查看 migrate 看看生成的代码:

op.add_column('phone_numbers', sa.Column('plant_id', sa.Integer(), nullable=True, comment='更新套餐库存'))
op.alter_column('phone_numbers', 'user_starting_time',
existing_type=mysql.DATETIME(),
comment=None,
existing_comment='用户开始时间',
existing_nullable=True)
op.alter_column('phone_numbers', 'user_end_time',
existing_type=mysql.DATETIME(),
comment=None,
existing_comment='用户结束时间',
existing_nullable=True)
op.alter_column('phone_numbers', 'expiry_date',
existing_type=mysql.INTEGER(),
comment=None,
existing_comment='号码有效期,单位是:月,例如:1个月、2个月等',
existing_nullable=True)



参考资料:

1、How to add comments to table or column in mysql using SQLAlchemy?


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - SQLAlchemy 如何向列增加注释

分享到:

发表评论

评论列表