gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:43:22 25 4
gpt4 key购买 nike

我想在 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 还是 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 否则会发生一些错误

关于python - 如何在 SQLAlchemy 中的文本数组列上创建 GIN 索引(使用 PostgreSQL 和 python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37389216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com