PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

SqlAlchemy:zapytanie o długość pola json posiadającego tablicę

Znalazłem rozwiązanie

Utwórz klasę, która rozszerza FunctionElement w ten sposób

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)

i używaj go w ten sposób

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

Uwaga:to zadziała na postgresie, ponieważ jest w nim zdefiniowana funkcja 'json_array_length'. Jeśli chcesz to dla innej bazy danych, ta funkcja będzie musiała się zmienić.Refer http://docs.sqlalchemy.org/en/rel_0_9/core/compiler.html#dalsze-przyklady



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Drukowanie wiadomości w czasie wykonywania w postgresie

  2. postgresql dołącz do 2 stołów

  3. Jak zapobiec tworzeniu klucza podstawowego UUID dla nowych obiektów SQLAlchemy z tą samą wartością?

  4. Uzyskaj ten sam wynik, gdy próbujesz znaleźć inne dane

  5. Hibernacja użycia sekwencji PostgreSQL nie wpływa na tabelę sekwencji