【问题标题】:Set the different value of column when upgrading table with alembic使用 alembic 升级表时设置不同的列值
【发布时间】:2016-08-30 12:10:50
【问题描述】:

我正在使用 PostgreSQL 和 Alembic 进行迁移。当我向我的用户表添加新列时,Alembic 使用以下脚本生成了迁移:

from alembic import op
import sqlalchemy as sa
import random

def generate_toke():
    return random.random()

def upgrade():
    op.add_column('user', sa.Column('token', sa.String(), nullable=True ))
    op.execute('some code here')

我真正想做的是通过generate_toke函数自动生成token的值。我怎样才能实现目标

【问题讨论】:

    标签: python postgresql upgrade alembic


    【解决方案1】:

    问题是random.random() 是一个python 端函数。 alembic 将这些操作转换为 sql 并 然后 执行它们。一种方法是添加 server_default 并使用 postgres random() 函数生成令牌:

    from alembic import op
    import sqlalchemy as sa
    
    def upgrade():
        op.add_column('user', sa.Column(
            'token', 
            sa.String(), 
            server_default=sa.text("random()"), 
            nullable=True ))
        op.execute('some code here')
    

    【讨论】:

      猜你喜欢
      • 2014-10-13
      • 2015-12-01
      • 2019-08-14
      • 2020-12-22
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 2019-12-11
      • 2018-11-09
      相关资源
      最近更新 更多