加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 16:13:31 所属栏目:百科 来源:网络整理
导读:我想在postgre表上执行大量的查询以按标签过滤 from sqlalchemy.dialects.postgresql import ARRAYclass Post(db.Model): __tablename__ = 'post' id = db.Column(db.Integer,primary_key=True) tags = db.Column(ARRAY(db.String)) This link建议将标签存储
我想在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,否则会发生一些错误

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读