DEV Community

qiudaozhang
qiudaozhang

Posted on

masonite orm 关于表需要新增字段的问题

背景

比如我们之前有一个api_keys的表,现在需要新增一个字段exchange_id,不要再去修改已经执行过的迁移文件,应该在此基础上新增一个文件。

处理

python craft migration  update_api_keys_table --table api_keys
Enter fullscreen mode Exit fullscreen mode
"""UpdateApiKeysTable Migration."""

from masoniteorm.migrations import Migration


class UpdateApiKeysTable(Migration):
    def up(self):
        """
        Run the migrations.
        """
        with self.schema.table('api_keys') as table:
            table.integer('exchange_id').unsigned()

    def down(self):
        """
        Revert the migrations.
        """
        self.schema.drop("api_keys")
Enter fullscreen mode Exit fullscreen mode

改动

我们表的字段定义忘了添加注释,还有部分字段需要指定默认值,也就是不是加字段而是要修改,处理方案如下

python craft migration  update_api_keys_table --table  api_keys 
Enter fullscreen mode Exit fullscreen mode

写入内容

"""UpdateApiKeysTable Migration."""

from masoniteorm.migrations import Migration


class UpdateApiKeysTable(Migration):
    def up(self):
        """
        Run the migrations.
        """
        with self.schema.table("api_keys") as table:
            table.string('api_key').comment("api key").change()
            table.string('api_secret').comment('api私钥').change()
            table.integer('exchange_id').unsigned().comment('交易所id').default(1).change()
            table.integer('uid').comment('用户id').change()

    def down(self):
        """
        Revert the migrations.
        """
        pass
Enter fullscreen mode Exit fullscreen mode

执行迁移

python craft migrate
Enter fullscreen mode Exit fullscreen mode

修改效果

最后关于migrate这块

  1. 定义的时候尽量思考全面
  2. 生成了迁移文件,就尽量不要移除
  3. 后续有改动继续定义新的迁移文件修改,不要删除后重来

Top comments (0)