2014-08-28 2 views
0

MYSQL 데이터베이스에 DOUBLE 열을 사용해야합니다. 나는 64 비트의 정밀도를 가진 Float를 사용할 것을 제안하는 문서를 읽었습니다. 그러나 이것은 작동하지 않는 것 같습니다. 나는 보통의 float 컬럼으로 끝나고, 필요한 정밀도는 존재하지 않는다. 마이그레이션 할 때Alembic에서 SqlAlchemy를 사용하여 배정 밀도 열 만들기

from sqlalchemy.dialects.mysql import DOUBLE #and in the model: 
item = db.Column(DOUBLE()) 

그러나, 플라스크-마이그레이션은 이전 칼럼과 새 사이의 차이를 말할 수있을 것 같지 않고, 빈 마이그레이션을 생성

나는 또한 시도했다.

나는이 읽기 : No changes detected in Alembic autogeneration of migrations with Flask-SQLAlchemyhttps://github.com/miguelgrinberg/Flask-Migrate/issues/24

을 그리고 증류기 설정에서 진정한 compare_type을 = 설정했지만, 플로트와 두 종류의 사이에 등록 된 차이는 아직 없다.

나는 db의 열을 수동으로 전환 할 수 있지만 sqlalchemy를 사용하여 배정도 열을 적용하는 방법은 알고있다.

+0

사실 나는 그것을 사실로 설정하려고 시도했다고 말하려고했습니다. 저의 실수였습니다. 빈 데이터베이스에서 처음부터 이중 열을 작성할 수는 있지만 기존 데이터베이스를 업그레이드하는 데는 큰 해결책이 아닙니다. 귀하의 의견에 따라 제목을 수정했습니다 - 감사합니다 – domoarrigato

+0

가 답변으로 작동합니다 - 게시 할 수 있습니까? – domoarrigato

답변

0

EnvironmentContext에있는 compare_type=True 설정이 작동해야합니다 (나를 위해 효과가 있음). 이 자동 생성을 시도하는 데 계속 문제가있는 경우이 작업을 수동으로 마이그레이션에 수동으로 추가 할 수 있습니다.

def upgrade(): 
    #... 
    op.alter_column('my_table', 'my_column', type_=DOUBLE, existing_nullable=False) 
    #... 

일반적으로, Alembic은 자동 생성 마이그레이션에서 완벽하지 않습니다. 마이그레이션 스크립트를 확인하고 필요에 따라 먼저 편집하는 것이 좋습니다.