簡體   English   中英

加入SqlAlchemy時如何將子查詢對象轉換為ResultProxy類?

[英]How to convert subquery objects into ResultProxy class when joined in SqlAlchemy?

我有一個 ORM 類和一個子查詢。 我在兩者之間創建了一個連接,我想訪問子查詢字段,因為一個類可能是一個虛擬的 ResultProxy 對象。

代碼示例:

session.query(ORM_Class,subqyery).\
       join(subqyery,ORM_Class.id==subqyery.id).all()

這將導致我得到一個元組結果集,它具有 ORM_CLass 的第一個對象,這是有道理的,但其余 id 字段將只是子查詢的純值。

輸出

[(orm.my_orm.ORM_Class Object , 1)]

1 是來自子查詢部分的 Id。 我想訪問 id 作為 ResultProxy.id 或任何其他類似的形式。

我們可以顯式地將類型轉換為其他形式嗎?

如前所述通過@ ILJA-everilä的意見,您的查詢的每個記錄是KeyedTuple ,這就好比namedtuple在Python,這意味着每個字段中它具有的元組的位置,而且屬性名稱。

您可以使用.keys()方法獲取包含這些記錄之一的屬性名稱的字符串列表,或者如果您確實有一個名為keys的列會.keys()方法,您也可以使用.keys()方法._fields屬性。 例如:

>>> myquery.all()[0].keys()
['ORM_Class', 'something_id']

或者

>>> myquery.all()[0]._fields
['ORM_Class', 'something_id']

上面告訴我我可以使用something_id屬性訪問第二個字段:

>>> myquery.all()[0].something_id
235

您還可以使用._asdict()方法獲取將記錄的所有實體名稱映射到其值的._asdict()

>>> myquery.all()[0]._asdict()
{'ORM_Class': <orm.my_orm.ORM_Class object at 0xdeadbeefc0ff>,
 'something_id': 235}

暫無
暫無

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

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