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

SqlAlchemy:Запитване на дължината на json полето, което има масив

Намерих решение

Създайте клас, който разширява FunctionElement по този начин

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)

и го използвайте по този начин

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

Забележка:това ще работи на postgres, защото функцията 'json_array_length' е дефинирана в него. Ако искате това за друга база данни, тази функция ще трябва да се промени. Вижте 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. Как Div() работи в PostgreSQL

  2. В Rails migraiton, как да задам стойността по подразбиране на колона да бъде NOW() вместо времето, когато съм стартирал миграцията?

  3. PostgreSQL поддържа ли прозрачно компресиране на таблици (фрагменти)?

  4. Как да не създавате разширения PostgreSQL 9.0 на RPM платформи

  5. JPA 2.1 StoredProcedureQuery с PostgreSQL и REF_CURSORs