在使用sqlalchemy的声明性ORM扩展时,可以使用多列索引。

14 浏览
0 Comments

在使用sqlalchemy的声明性ORM扩展时,可以使用多列索引。

根据文档sqlalchemy.Column类中的注释,我们应该使用sqlalchemy.schema.Index类来指定包含多列的索引。

然而,示例展示了如何直接使用Table对象来实现:

meta = MetaData()
mytable = Table('mytable', meta,
    # 一个带有索引"ix_mytable_col1"的列
    Column('col1', Integer, index=True),
    # 一个带有唯一索引"ix_mytable_col2"的列
    Column('col2', Integer, index=True, unique=True),
    Column('col3', Integer),
    Column('col4', Integer),
    Column('col5', Integer),
    Column('col6', Integer),
    )
# 在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), index=True)
    b = Column(String(32), index=True)

我想为列"a"和"b"创建一个索引。

0