PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

SQLAlchemy, PostgreSQL và array_agg:Làm cách nào để chọn các mục từ array_agg?

Có thể bạn đang làm đúng mọi thứ, nhưng trước tiên hãy lấy các mảng trống. Trong truy vấn trước đó, bạn đã sử dụng tính năng lọc trong python (len(x[1]) > 1 ). Bạn có thể in Query trước khi thực thi nó để đảm bảo.

Bạn có thể nên thêm having mệnh đề cho truy vấn cơ sở của bạn:

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()
)

Sau đó, bạn cũng sẽ không cần lọc trong 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. Sử dụng sqldf và RPostgreSQL cùng nhau

  2. Chia bản ghi do hàm trả về thành nhiều cột

  3. Truy xuất nhiều hàng với truy vấn bằng cách sử dụng VÀ và HOẶC

  4. Vấn đề ràng buộc PostgreSQL

  5. PostgreSQL COPY csv bao gồm Báo giá