PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

SQLAlchemy, PostgreSQL dan array_agg:Bagaimana cara memilih item dari array_agg?

Anda mungkin melakukan semuanya dengan benar, tetapi mendapatkan array kosong terlebih dahulu. Dalam kueri Anda sebelumnya, Anda menggunakan pemfilteran in-python (len(x[1]) > 1 ). Anda dapat mencetak Query ekspresi sebelum mengeksekusinya untuk memastikan.

Anda mungkin harus menambahkan having klausa untuk kueri dasar Anda:

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

Maka Anda juga tidak perlu pemfilteran dalam 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. Fungsi lead/lag bersyarat PostgreSQL?

  2. Menjatuhkan kolom di Postgres pada kumpulan data besar

  3. Apakah Driver JDBC Postgres memiliki cara untuk mengatur client_encoding untuk terhubung ke database?

  4. Mendapatkan semua Bangunan dalam jangkauan 5 mil dari koordinat yang ditentukan

  5. Bagaimana cara menyiapkan terowongan SSH di Google Cloud Dataflow ke server database eksternal?