来自ARRAY列的不同值

时间:2017-04-07 14:36:17

标签: python postgresql sqlalchemy

我使用PostgreSQL的ARRAY存储图像标签。

如何在SQLAlchemy中编写ORM查询,该查询返回表中找到的所有标记的集合,用于以下模型:

from sqlalchemy.dialects.postgresql import ARRAY

class Image(Base):
    __tablename__ = 'images'
    id = Column(String, primary_key=True)
    tags = Column(ARRAY(Unicode))

我想我需要使用横向连接,但我不知道如何使用SQLAlchemy的ORM语法来实现它。

PG版本:9.5

1 个答案:

答案 0 :(得分:2)

您可以使用func.unnest

from sqlalchemy import func

session.query(func.unnest(Image.tags)).distinct().all()

distinct()将使结果成为集合,unnest将数组拆分为单独的行(如postgresql函数unnest)。