sql >> データベース >  >> RDS >> PostgreSQL

SqlAlchemy:配列を持つ長さjsonフィールドのクエリ

    解決策を見つけました

    このようにFunctionElementを拡張するクラスを作成します

    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)
    

    このように使用します

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

    注:関数'json_array_length'が定義されているため、これはpostgresで機能します。別のDBでこれが必要な場合は、その関数を変更する必要があります。 http://docs.sqlalchemy.org/en/rel_0_9/core/compiler.html#further-examples



    1. MySQLiは1つの結果のみを表示します

    2. C#からSQL Server 2008のストアドプロシージャにXMLを渡す方法は?

    3. PHPで連想配列を並べ替える方法

    4. ユーザーがボーリング制限に達した場合にカウントします