Python 如何根据SQLAlchemy中的供应商创建不同的列

Python 如何根据SQLAlchemy中的供应商创建不同的列,python,sqlalchemy,Python,Sqlalchemy,我试着不编写专门用于跨供应商支持的供应商模型,并坚持使用相同功能但名称不同的列选项。例如,性能问题和区分大小写的列需要utf8_二进制排序规则,但名称因供应商而异 我知道,在考虑跨供应商时,最好的方法是避免此类类型和选项,但当不可避免地会出现特定于供应商的选项时,是否有任何SQLAlchemy实现可以做到这一点?您应该在特定于供应商的配置文件中定义列选项,如: col_options = {'collation': 'utf8_binary'} 然后在模型定义中使用它,如下所示: name =

我试着不编写专门用于跨供应商支持的供应商模型,并坚持使用相同功能但名称不同的列选项。例如,性能问题和区分大小写的列需要utf8_二进制排序规则,但名称因供应商而异


我知道,在考虑跨供应商时,最好的方法是避免此类类型和选项,但当不可避免地会出现特定于供应商的选项时,是否有任何SQLAlchemy实现可以做到这一点?

您应该在特定于供应商的配置文件中定义列选项,如:

col_options = {'collation': 'utf8_binary'}
然后在模型定义中使用它,如下所示:

name = Column('name', String(**col_options))

**将把列选项中的所有键/值对映射到字符串作为关键字参数。

此外,只需定义供应商特定的类型,并根据供应商配置从不同的模块导入它们:KeyCodeColumnType=String**列选项,并在适当的情况下使用它。这将减少重复并使重构更加容易。