簡體   English   中英

如何在sqlalchemy表達式語言中使用jsonb與select表達式中的整數進行比較?

[英]how to use jsonb in sqlalchemy expression language to compare with integer in select expression?

如何使用sqlalchemy核心表達式語言訪問jsonb字典值? 例如:

 s1 = select([issues.c.id,
             issues.c.data['product_id'],
             products.c.name.label('product_name')
             ]). \
    where(issues.c.id == issue_id). \
    select_from(issues.
    outerjoin(products,
    (issues.c.data['product_id']).cast(Integer) == (products.c.id)))

問題表中存儲的數據如下:

id    | data------+
5247  | {"priority": "M", "product_id": "1"}

我究竟如何使用此表達式來聯接表。 上面給出的錯誤為: sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedFunction) operator does not exist: jsonb = integer

通過在轉換為整數之前添加astext獲得它:

s1 = select([issues.c.id,
             issues.c.data['product_id'],
             products.c.name.label('product_name')
             ]). \
    where(issues.c.id == issue_id). \
    select_from(issues.
    outerjoin(products,
    (issues.c.data['product_id']).astext.cast(Integer) == (products.c.id)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM