De acuerdo con the documentation y los comentarios en la clase sqlalchemy.Column
, debemos usar la clase sqlalchemy.schema.Index
para especificar un índice que contenga varias columnas.Índice de columnas múltiples al usar la extensión ORM declarativa de sqlalchemy
Sin embargo, el ejemplo muestra cómo hacerlo utilizando directamente el objeto de tabla de la siguiente manera:
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)
¿Cómo debemos hacerlo si usamos la extensión ORM declarativa?
class A(Base):
__tablename__ = 'table_A'
id = Column(Integer, , primary_key=True)
a = Column(String(32))
b = Column(String(32))
Me gustaría un índice en la columna "a" y "b".
La pregunta es un poco confuso sobre si desea que varios índices o un índice único en múltiples columnas (y era más confusa antes de lo edité - originalmente deliciosamente preguntó para * "un índice que contiene múltiples índices múltiples" *). Pero no importa, supongo, ya que la respuesta de zzzeek aborda ambos casos. –