How to create GIN index on text array column in SQLAlchemy (with PostgreSQL and python)
我想在 postgre 表上执行大量查询以按标签过滤
1 2 3 4 5 6 7 | from sqlalchemy.dialects.postgresql import ARRAY class Post(db.Model): __tablename__ = 'post' id = db.Column(db.Integer, primary_key=True) tags = db.Column(ARRAY(db.String)) |
此链接建议将标签存储为带有 GIN 索引的文本数组。
如何在上表中添加 GIN 索引?我是否使用
我通过以下方式解决了它:
1 2 3 4 5 6 7 8 | from sqlalchemy.dialects.postgresql import ARRAY, array class Post(db.Model): __tablename__ = 'post' id = db.Column(db.Integer, primary_key=True) tags = db.Column(ARRAY(db.Text), nullable=False, default=db.cast(array([], type_=db.Text), ARRAY(db.Text))) __table_args__ = (db.Index('ix_post_tags', tags, postgresql_using="gin"), ) |
并通过
简单查询
1 | db.session.query(Post).filter(Post.tags.contains([tag])) |
必须将数组类型保持为