python - 使用alembic升级表时设置不同的列值

标签 python postgresql upgrade alembic

我正在使用 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的值。如何实现目标

最佳答案

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

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')

关于python - 使用alembic升级表时设置不同的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39227156/

相关文章:

ruby-on-rails - Rails 3.1 和 Ruby EE

asp.net - 将项目升级到 Visual Studio 2019 时出现问题

python - Django SECRET_KEY 风险

SQL - 如何在幂等插入示例中使用连接而不是 EXISTS 和 NOT EXISTS

python - 读取超时错误: Twitter Streaming API

ruby-on-rails - 如何更改 Heroku 中的列类型?

postgresql - ALTER FUNCTION 的参数默认值?

linux - glibc 2.14安装错误selinux.c : error: libaudit. h没有这样的文件或目录

python - 更改像素值

python - 从 Borland C 转换为 python