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

2024-06-17 09:57:34 发布

您现在位置: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索引将标记存储为文本数组。在

我怎样把杜松子酒指数加到上表中?我是否使用StringText数据类型有区别吗?在


Tags: from标记importdbstringmodelsqlalchemypostgresql
1条回答
网友
1楼 · 发布于 2024-06-17 09:57:34

我通过以下方法解决了这个问题:

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"), )

只需

^{pr2}$

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

相关问题 更多 >