SQLAlchemy - 根据方言以不同方式编译索引

SQLAlchemy - Compile Index Differently Depending on Dialect

我有一个 SQLAlchemy class 像这样:

class TableName(Base):
    __table_args__ = ( 
         Index('index_name', 'column_name'), 
    )

我希望索引的名称根据方言进行不同的编译,因为据我了解,MySQL可以编译具有相同名称的索引,只要它们在不同的表中,而Sqlite 要求每个索引都有一个唯一的名称。我们有一些表对 mysql 使用相同的索引名称,我希望将其编译为 sqlite 以进行测试。这是可能的还是我因为其他原因感到困惑?

我需要编译 CreateIndex 函数,并使用传入的索引和 table 名称创建一个唯一的索引名称:

@compiles(CreateIndex, "sqlite")
def compile_index(element, compiler, **kw):
    index_name = element.element.name
    table_name = element.element.table.name 
    column_name = element.element.expressions[0].name
    unique_index_name = f"{table_name} {index_name}"
    return "CREATE INDEX \"%s\" ON %s (\"%s\")" % (unique_index_name, table_name, column_name)