sql >> Databáze >  >> RDS >> PostgreSQL

SqlAlchemy:Dotazování na pole délky json s polem

Nalezeno řešení

Vytvořte třídu, která rozšiřuje FunctionElement takto

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)

a použijte jej takto

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

Poznámka:Toto bude fungovat na postgres, protože je v něm definována funkce 'json_array_length'. Pokud to chcete pro jinou DB, bude nutné tuto funkci změnit. Viz http://docs.sqlalchemy.org/en/rel_0_9/core/compiler.html#further-examples



  1. Aktualizujte tabulku MySQL pomocí souboru CSV

  2. Hibernace neukládá objekt do databáze?

  3. Jak poslat výsledky dotazu e-mailem jako přílohu v SQL Server (T-SQL)

  4. Chyba SQL dotazu:Použijte metodu SUM, když #1054 - Neznámý sloupec 'tbl_customers.id' v klauzuli where