2013-12-18 2 views
9

Alembicを使用して、データベースの列の型を文字列から整数に変更したいと考えています。私は純粋なSQLを使用している場合、それは目標達成:Alembic/SQLAchemyでUSING節を使用するには?

alter table statistic_ticket alter column tags type bigint using tags::bigint; 

をしかし、私は同じようアレンビックを使用する場合:SQLAlchemyのによって生成された

HINT: Please use USING clause for carrying out the conversion 

SQL文:

import sqlalchemy as sa 
def upgrade(): 
    op.alter_column('statistic_ticket', 'tags', nullable = True, existing_type=sa.String(length=255), type_=sa.Integer, existing_nullable=True) 

私はエラーを得ました:

ALTER TABLE statistic_ticket ALTER COLUMN tags TYPE INTEGER' {} 

Ca誰かが私にalembicやSQLAlchemyのSQLのやり方をop.execute(SQL)経由で教えてもらえますか?

アレンビック0.8.8から
+0

この同じトピックに投稿した[その他の質問](http://stackoverflow.com/questions/20687151/how-to-use-using-clause-in-alembic)私はこの質問をPostgreSQLに付け加えました。なぜなら、これはあなたが他の質問にタグ付けしたものだったからです。他のデータベースにタグを付けたので、使用しているデータベースがPostgresqlであることを確認できますか? Thanks –

+0

ありがとう、sqlalchemy/alembicはpostgresqlでUSING節をサポートしていないようです。 – SieuTruc

+0

その情報の明確な情報源は見つかりましたか?もしそうなら、私はあなた自身の質問に答えを加えることを推奨します(Alembicは "USING"節をサポートしていません)、ソースを含めてから、あなたの答えを質問の答えとして記入してください。 –

答えて

2

、あなたがpostgresql_usingキーワードを使用することができます以前のバージョンでは

op.alter_column('statistic_ticket', 'tags', type_=sa.BigInteger, 
       postgresql_using='tags::bigint') 

を、あなたが使用する必要がありop.execute:私は閉じるために投票を含め、あなたの質問をクリーンアップ

op.execute('ALTER TABLE statistic_ticket ALTER COLUMN ' 
      'tags TYPE bigint USING tags::bigint') 
+1

Alembic postgresql_usingを含む0.8.8が出ています – dequis

関連する問題