【问题标题】:Create an ordered Index in sqlite db using SQLAlchemy使用 SQLAlchemy 在 sqlite db 中创建有序索引
【发布时间】:2019-05-01 00:59:05
【问题描述】:

我正在使用声明性 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)

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

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

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

【问题讨论】:

  • 请注意,如果在类主体中定义__table_args__,正确的方法是在__table_args__ 中传递Index,但由于在定义索引。

标签: python sqlite sqlalchemy


【解决方案1】:

您可以使用功能索引,如documentation 中所指定:

功能索引

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

from sqlalchemy import Index

Index('someindex', mytable.c.somecol.desc())

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 2017-07-12
    • 2021-10-01
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多