sql >> Databasteknik >  >> RDS >> PostgreSQL

SqlAlchemy:Frågar längden json-fältet som har en array

Hittade en lösning

Skapa en klass som utökar FunctionElement så här

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)

och använd det så här

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

Notera:detta kommer att fungera på postgres eftersom funktionen 'json_array_length' är definierad i den. Om du vill ha detta för en annan DB måste den funktionen ändras. Se http://docs.sqlalchemy.org/en/rel_0_9/core/compiler.html#further-examples



  1. MySQL:Skapar tabell med FK-fel (fel nr 150)

  2. PostgreSQL:s date_trunc i mySQL

  3. Varför bara väntastatistik inte räcker

  4. Postgresql enum vad är fördelarna och nackdelarna?