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

Tham gia với hàm trả về thiết lập (SRF) và truy cập các cột trong SQLAlchemy

Hóa ra điều này không được SA hỗ trợ trực tiếp, nhưng hành vi chính xác có thể đạt được với ColumnClause FunctionElement . Nhập lần đầu tiên công thức này như được mô tả bởi zzzeek trong vấn đề SA này . Sau đó, tạo một unnest đặc biệt hàm bao gồm WITH ORDINALITY bổ ngữ:

class unnest_func(ColumnFunction):
    name = 'unnest'
    column_names = ['unnest', 'ordinality']

@compiles(unnest_func)
def _compile_unnest_func(element, compiler, **kw):
    return compiler.visit_function(element, **kw) + " WITH ORDINALITY"

Sau đó, bạn có thể sử dụng nó để kết hợp, sắp xếp, v.v. như thế này:

act_ref = unnest_func(Activity.ob_refs)
query = (query
    .add_columns(act_ref.c.unnest, act_ref.c.ordinality)
    .outerjoin(act_ref, sa.true())
    .outerjoin(Subscription, Subscription.ob_ref == act_ref.c.unnest)
    .order_by(act_ref.c.ordinality.desc()))



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trung bình động trong postgresql

  2. Cách sạch nhất để nhận giờ địa phương hiện tại ở Postgres là gì?

  3. POSTGRES kiểm tra xem giá trị được cung cấp có nằm trong cột kiểu mảng hay không

  4. FATAL:không thể truy cập tệp khóa cá nhân /etc/ssl/private/ssl-cert-snakeoil.key:Quyền bị từ chối

  5. Không có toán tử nào phù hợp với (các) loại đối số và tên đã cho. Bạn có thể cần thêm phôi kiểu rõ ràng. - Netbeans, Postgresql 8.4 và Glassfish