使用 SQLAlchemy 在 sqlite db 中创建有序索引

Joh*_*oco 5 python sqlite sqlalchemy

我正在使用声明性 API 在 SQLAlchemy 中定义一个表。它有一个我想索引的外键。我的问题是:我怎么定义从创建的索引master_ref是一个ASCDESC指数(而不诉诸与SQL做手工)?

class Item(Base):
    id = Column(INTEGER, primary_key=True)
    master_ref = Column(INTEGER, ForeignKey('master.id'), nullable=True, index=True)
    value = Column(REAL)
Run Code Online (Sandbox Code Playgroud)

查看SqlAlchemy的文档,创建索引的另一种方法是:

class Item(Base):
    id = Column(INTEGER, primary_key=True)
    master_ref = Column(INTEGER, ForeignKey('master.id'))
    value = Column(REAL)
    Index('ix_name', master_ref)
Run Code Online (Sandbox Code Playgroud)

但我找不到任何关于如何在任何地方定义 ASC 或 DESC 的参考。

Mar*_*eld 5

您可以使用文档中指定的功能索引

功能索引

索引支持目标后端支持的 SQL 和函数表达式。要使用降序 值对列创建索引,ColumnElement.desc()可以使用修饰符:

from sqlalchemy import Index

Index('someindex', mytable.c.somecol.desc())
Run Code Online (Sandbox Code Playgroud)

同样,对于升序值,请使用ColumnElement.asc()修饰符。