我的数据库是 MySQL。我使用 SqlAlchemy ORM 来定义和访问它。我使用 Alembic 进行迁移。我有一个模型,其字段曾经只包含英文文本 (Ascii/latin-1)。现在,该字段需要包含 Unicode 文本。为了将我的模型转换为支持 MySQL 的 Unicode,我需要添加以下类级别属性: 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'))
关于python - 如何使用 alembic 将 MySQL 表转换为 utf8 字符集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26191213/