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

SqlAlchemy:Truy vấn trường json độ dài có một mảng

Đã tìm ra giải pháp

Tạo một lớp mở rộng FunctionElement như thế này

from sqlalchemy.sql.expression import FunctionElement
from sqlalchemy.ext.compiler import compiles
class json_array_length(FunctionElement):
    name = 'json_array_len'

@compiles(json_array_length)
def compile(element, compiler, **kw):
    return "json_array_length(%s)" % compiler.process(element.clauses)

và sử dụng nó như thế này

session.query(Post.id, json_array_length(Post.items))

Lưu ý:điều này sẽ hoạt động trên postgres vì ​​hàm 'json_array_length' được định nghĩa trong đó. Nếu bạn muốn điều này cho một DB khác, chức năng đó sẽ cần phải thay đổi. Tham khảo http://docs.sqlalchemy.org/en/rel_0_9/core/compiler.html#further-examples



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Arval SQLException:FATAL:xin lỗi, quá nhiều khách hàng đã có trong postgres

  2. Cách truy vấn giá trị bằng ký tự đại diện trong PostgreSQL hstore

  3. Tìm ra số tháng giữa 2 ngày

  4. PostgreSQL json_array_elements trong mệnh đề FROM - tại sao đây không phải là tham gia cartesian?

  5. Truy vấn gốc JPA trả về Double hoặc BigDecimal