根據the documentation和sqlalchemy.Column
類中的註釋,我們應該使用類sqlalchemy.schema.Index
來指定包含多列的索引。使用sqlalchemy的聲明性ORM擴展時的多列索引
然而,示例說明了如何通過直接使用表對象這樣做:
meta = MetaData()
mytable = Table('mytable', meta,
# an indexed column, with index "ix_mytable_col1"
Column('col1', Integer, index=True),
# a uniquely indexed column with index "ix_mytable_col2"
Column('col2', Integer, index=True, unique=True),
Column('col3', Integer),
Column('col4', Integer),
Column('col5', Integer),
Column('col6', Integer),
)
# place an index on col3, col4
Index('idx_col34', mytable.c.col3, mytable.c.col4)
我們應該怎麼做,如果我們使用ORM聲明擴展?
class A(Base):
__tablename__ = 'table_A'
id = Column(Integer, , primary_key=True)
a = Column(String(32))
b = Column(String(32))
我想索引列「a」和「b」。
的問題是有點不清楚是否要多個索引或多個列的單一索引(以及更困惑之前,我編輯了 - 原來它興高采烈地問*爲「包含多個索引的索引」*)。但不管怎樣,我想,因爲zzzeek的回答解決了這兩種情況。 –