【发布时间】:2012-09-10 23:49:51
【问题描述】:
我将 SQLAlchemy 与 Elixir 一起使用,使用 SQLite 一切正常。但是,当我切换到 MySQL 时,有一个表名和列名长度限制(64 个字符)。我有很多具有多个 ManyToMany 关系的实体,但我没有找到一种方法来自动钳制生成的长表名称,例如 MyFirstEntity_rel_otherEntities__MySecondEntity_rel_theFirstEntities。
ManyToOne 关系的外键列名称太长,具体取决于类和关系名称。 create_engine("...", label_length = 64) 没有做到这一点,我已经使用 shortcolumns = True 来避免将整个 Python 模块名称也用作前缀。
我看到的唯一方法是遍历整个架构并手动定义表名(对于多对多关系)和列名(对于多对一关系)。还有其他选择吗?
【问题讨论】:
-
我通过对所有超过 MySQL 64 个字符限制的关系使用可选参数 colname (ManyToOne) 和 tablename (ManyToMany) 解决了这个问题。但是,我想知道是否有更简单、更自动化的解决方案。
标签: python mysql sqlalchemy python-elixir