sql >> Database teknologi >  >> RDS >> PostgreSQL

SqlAlchemy:Forespørgsel om længden json-feltet med et array

Fandt en løsning

Opret en klasse, der udvider FunctionElement som denne

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)

og brug det sådan her

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

Bemærk:dette vil fungere på postgres, fordi funktionen 'json_array_length' er defineret i den. Hvis du vil have dette til en anden DB, skal denne funktion ændres. Se http://docs.sqlalchemy.org/da/rel_0_9/core/compiler.html#further-examples



  1. Fejl med en Symfony-forespørgsel:Forventet bogstavelig, fik ''

  2. Kan ikke oprette forbindelse til RDS-instans fra EC2-instans

  3. Hvordan får man seks ugers søndagstælling ved hjælp af Weekno i SQL Server 2008?

  4. Hvordan opdaterer man ændrede data til databasen ved hjælp af JTable?