2016-08-30 3 views
1

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

私は実際に私がゴール

答えて

0
に達成することができますgenerate_tokeのfunction.Howによってトークンの値を自動生成されてやりたいです

問題はrandom.random()はPython側の関数です。 alembicはこれらの操作をsqlに変更し、と入力してを実行します。 1つの方法は、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') 
関連する問題