1
加盟後當我加入using語句兩個表(對象)作爲如何解決ambigious科拉姆在SQLAlchemy的
session.query(object, robject).filter(getattr(object.c, "hid")==getattr(robject.c,\
)).subquery()
結果列引用「藏」是模糊的,因爲兩個表具有HID列。 我應該如何解決這個問題?
感謝
加盟後當我加入using語句兩個表(對象)作爲如何解決ambigious科拉姆在SQLAlchemy的
session.query(object, robject).filter(getattr(object.c, "hid")==getattr(robject.c,\
)).subquery()
結果列引用「藏」是模糊的,因爲兩個表具有HID列。 我應該如何解決這個問題?
感謝
你通常希望名字只有那些你需要(因爲SUBQ不是用來裝載滿對象)然後您可以爲任何額外的使用標籤()列的子查詢:
subq = sess.query(object.a, object.b, object.hid.label('o_hid'),
robject.c, robject.hid.label('r_hid')).filter(..).subquery()
子查詢的名字,然後根據標籤名稱的列:
query(Something).join(subq, subq.c.o_hid == Something.q).filter(subq.c.r_hid == 5)
標籤創建別名,但不刪除原始HID列。他們仍然有衝突。我認爲我們需要一個像rename這樣的命令來重命名列而不是別名。 – Sandeep
在類似於'session.query(MyTable).join(MyTable.relation).filter_by(ambiguous_column ='something')的查詢中,SQL Alchemy 1.0.14只是從關係的另一端任意取得'ambiguous_column',而沒有任何投訴。如果我把'join'放在'filter_by'之後,它會從第一個表格,即'MyTable'!這是一個錯誤還是一個特徵?!?! – Mahdi
這是[功能](http://docs.sqlalchemy.org/en/latest/orm/query.html?highlight=filter_by#sqlalchemy.orm.query.Query.filter_by)。 「關鍵字表達式是從查詢的主要實體中提取的,或者是對Query.join()的調用的目標的最後一個實體。」 – zzzeek