2014-10-04 77 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')) 
相关问题