PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

SQLAlchemy, PostgreSQL и array_agg:Как да изберете елементи от array_agg?

Вероятно правите всичко правилно, но първо получавате празни масиви. В предишната си заявка сте използвали филтриране в Python (len(x[1]) > 1 ). Можете да отпечатате Query израз, преди да го изпълните, за да сте сигурни.

Вероятно трябва да добавите having клауза към вашата основна заявка:

from sqlalchemy import Integer
from sqlalchemy.dialects.postgresql import ARRAY

cats_agg = func.array_agg(ProductCategory.id, type_=ARRAY(Integer)).label('cats')
prods = (
    session.query(
        Product.id.label('id'),
        cats_agg,
    .outerjoin(
        ProductCategory,
        ProductCategory.product_id == Product.id)
    .group_by(Product.id)
    .having(func.array_length(cats_agg, 1) > 1)
    .subquery()
)

Тогава също няма да имате нужда от филтриране в Python.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Управление на замръзване в PostgreSQL

  2. Как да формулирам заявка за вмъкване в друга база данни с помощта на postgres_fdw?

  3. Upsert в Postgres с помощта на node.js

  4. Как мога да се присъединя с получена таблица?

  5. Как да свържете контейнера за уеб приложения на Docker към контейнера на Docker PostgreSQL?