在SQLAlchemy的查詢來查詢,您可以選擇特定的行這樣的:SQLAlchemy的增加不需要的列時,外鍵表添加
q = session.query(Equipment.name)
,將返回一列的每一行。您可以從模型中添加更多的列描述符。在這種情況下,len(q.column_descriptions)
的值就是1。
但是,只要添加一個外鍵列,即使我沒有要求他們,您也會突然收到表格的所有列。
q = dbsession.query(models.Equipment.name, models.Equipment.model)
這應該是兩列,但現在len(q.column_descriptions)
是15(此表,這就是所有的人都加addidtional一個)。
查詢(q.statement)結束這樣看:
SELECT public.equipment.name, public.equipment.id, public.equipment.model_id, public.equipment.serno, public.equipment.location_id, public.equipment.sublocation, public.equipment.addeddate, public.equipment.comments, public.equipment.language_id, public.equipment.owner_id, public.equipment.vendor_id, public.equipment.account_id, public.equipment.parent_id, public.equipment.active
FROM public.equipment
我認爲這是SQLAlchemy的一個bug,但也許我做錯了什麼,有人在這裏可能知道它是什麼。
感謝您的信息。所以這是「預期」的行爲,我猜。但是這很奇怪,因爲如果我包含整行's.query(Equipment)',我只是按預期得到該列的外鍵id。但是,然後嘗試只選擇該列,然後我得到整個行。這不是我所期望的。無論如何,似乎只有解決方法是以某種方式解決它(可能只是獲取整行並挑出客戶端代碼中的列)。 – Keith 2011-03-14 20:55:10
你有什麼建議,我可以做這樣的查詢,只是作爲一個整數(外鍵ID)的列值? – Keith 2011-03-15 10:48:32
@Keith如果你想要外鍵id爲什麼不請求它? 'q = dbsession.query(models.Equipment.name,models.Equipment.model_id)' – lambacck 2011-10-30 03:24:24