如何在SQLAlchemy中使用文本数组列创建GIN索引(使用PostgreSQL和python)

前端之家收集整理的这篇文章主要介绍了如何在SQLAlchemy中使用文本数组列创建GIN索引(使用PostgreSQL和python)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在postgre表上执行大量的查询以按标签过滤
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))

This link建议将标签存储为带有GIN索引的文本数组.

如何将GIN索引添加到上表?我是否使用String vs Text数据类型也有所不同?

解决了以下问题:
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"),)

并简单地查询

db.session.query(Post).filter(Post.tags.contains([tag]))

必须将数组类型保持为Text而不是String,否则会发生一些错误

猜你在找的Postgre SQL相关文章