我想建立一个类似于SQL中这样的索引:
CREATE INDEX IF NOT EXISTS new_index ON schema.tablename USING gist (tsrange(start, "end"))
我的声明式ORM模型大致如下:
import sqlalchemy as sa
class Tablename(Mixins):
__table_args__ = (
sa.Index('index_name', postgresql_using="gist"), # ????
{'schema': 'schema'}
)
start = sa.Column(pg.TIMESTAMP, autoincrement=False, primary_key=True)
end = sa.Column(pg.TIMESTAMP, nullable=False)
后来,我想使用 alembic
工具,它应包括降级操作,如下:
op.drop_index('index', 'tablename', schema='schema')
这实际上具有以下SQL:
DROP INDEX IF EXISTS schema.index
# ????
。我认为我需要修改那一行以产生我想要的sql语句。我只是不知道该去哪里查找或者sqlalchemy的术语是什么。定义一个函数可能是正确的方法,但从文档中并不明显如何将所有内容混合在一起(postgres GIST,TSRANGE,SQLAlchemy Index,SQA functional index等)。 - Brian Bruggeman