sql >> Database >  >> RDS >> PostgreSQL

SqlAlchemy:opvragen van het lengte json-veld met een array

Een oplossing gevonden

Maak een klasse die FunctionElement op deze manier uitbreidt

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)

en gebruik het zo

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

Opmerking:dit werkt op postgres omdat de functie 'json_array_length' erin is gedefinieerd. Als je dit voor een andere DB wilt, moet die functie worden gewijzigd.Refereer http://docs.sqlalchemy.org/en/rel_0_9/core/compiler.html#further-examples



  1. MySQL Event If-instructie END IF Error

  2. Walkthrough:SQL Server High Availability instellen

  3. Hoe duur zijn JOIN's in SQL? En/of, wat is de afweging tussen prestaties en normalisatie?

  4. Wat betekent %Type in Oracle sql?