2014-10-04 3 views
3

내 데이터베이스는 MySQL입니다. SqlAlchemy ORM을 사용하여 정의하고 액세스합니다. 나는 마이그레이션을 위해 Alembic을 사용한다. 저는 영어 텍스트 (Ascii/latin-1)만을 사용하는 필드가있는 모델을 가지고 있습니다. 이제이 필드는 유니 코드 텍스트를 포함해야합니다. MySQL을위한 유니 코드를 지원하기 위해 내 모델을 변환하기 위해 나는 다음 클래스 수준의 속성을 추가해야합니다 mysql_character_set = 'UTF8'지금까지MySQL 테이블을 alembic을 사용하는 utf8 문자 세트로 변환하는 방법은 무엇입니까?

class MyModel(Base): 
    __tablename__ = 'mymodel' 
    mysql_character_set = 'utf8' 

    id = Column(Integer, primary_key=True) 
    name = Column(String(64), unique=True, nullable=False) 

너무 좋아합니다. 이 속성을 Alembic 이주 스크립트의 일부로 추가하려고합니다. 나는 일반적으로 증류기의 우수한 자동으로 생성 명령을 사용

alembic revision --autogenerate 

문제는이 명령은 모든 모델 변경을 캡처하지하고 mysql_character_set 속성, 특히하지를 추가 않는다는 것입니다.

이 속성을 수동으로 alembic 마이그레이션 스크립트에 추가하려면 어떻게합니까?

+0

, 확실하지 않다. create_engine ("mysql + mysqldb : // 사용자 : pass @ host/dbname? charset = utf8 & use_unicode = 0") – Jisson

답변

1

나는 이런 식으로했다 : 가지고 있죠 시도

from alembic import op 
import sqlalchemy as sa 


def upgrade(): 
    conn = op.get_bind() 
    conn.execute(sa.sql.text('ALTER table my_table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci'))