2013-12-18 5 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' {} 

칼슘 n 누군가가 alembic 또는 SQLAlchemy의 SQL을 op.execute(SQL)을 통해 수행하는 방법을 보여 줍니까?

증류기 0.8.8에서
+0

이 동일한 주제에 게시 한 [다른 질문] (http://stackoverflow.com/questions/20687151/how-to-use-using-clause-in-alembic) 나는이 질문을 PostgreSQL에 태깅했다. 그 질문은 다른 질문을 태그 한 것이기 때문에. 다른 데이터베이스에 태그를 지정 했으므로 사용중인 데이터베이스가 Postgresql인지 확인할 수 있습니까? 감사합니다 –

+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