我的数据库是
MySQL.我使用SqlAlchemy ORM来定义和访问它.我使用Alembic进行迁移.我有一个模型,其中的字段过去只包含英文文本(Ascii / latin-1).现在,该字段需要包含Unicode文本.为了转换我的模型以支持MySQL for MySQL,我需要添加以下类级属性:mysql_character_set =’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的优秀自动生成命令:
alembic revision --autogenerate
问题是该命令不捕获每个模型更改,特别是不添加mysql_character_set属性.
如何手动将此属性添加到alembic迁移脚本?
最佳答案 我是这样做的:
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'))