2014-10-04 86 views
3

我的數據庫是MySQL。我使用SqlAlchemy ORM來定義和訪問它。我使用Alembic進行遷移。我有一個模型,其中一個字段只包含英文文本(Ascii/latin-1)。現在,這個字段需要包含Unicode文本。爲了將我的模型,以支持Unicode爲MySQL我需要添加下面的類級屬性:mysql_character_set =「utf-8」如何使用alembic將MySQL錶轉換爲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

canyou嘗試,我不知道。 create_engine( 「MySQL的+ MySQLdb的://用戶:通@主機/ DBNAME字符集= UTF8&use_unicode = 0」) – Jisson 2014-12-10 16:22:54

回答

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