2014-12-02 71 views
0

我在MySQL中使用以下查詢。它使用2個表格。其中一個表名爲sample_variable。它是別名(如a和b)並加入其中。另一個表名爲sample_fixed。查詢與SQL一樣按預期工作。我正在尋找的是這個查詢的sqlalchemy版本。任何幫助表示讚賞。如何將此原始SQL轉換爲sqlalchemy查詢?

SELECT a.row_id, a.field, a.value, b.field, b.value, sample_fixed.qno FROM sample_variable a join sample_variable b on a.row_id = b.row_id RIGHT OUTER join sample_fixed on a.row_id = sample_fixed.row_id WHERE a.row_id = b.row_id AND a.field = 'age' AND a.value = 60 AND b.field = 'region' AND b.value = 3;

謝謝你在前進, -RLS

回答

1
A = aliased(SampleVariable, name="a") 
B = aliased(SampleVariable, name="b") 
qry = (
    session.query(A.row_id, A.field, A.value, B.field, B.value, 
        SampleFixed.qno) 
    .join(B, A.row_id == B.row_id) 
    .outerjoin(SampleFixed, A.row_id == SampleFixed.row_id) 
    .filter(A.row_id == B.row_id) # @note: redundant: included in the JOIN above 
    .filter(A.field == 'age') 
    .filter(A.value == 60) 
    .filter(B.field == 'region') 
    .filter(B.value == 3) 
) 
+0

謝謝你,麪包車。我的作品非常漂亮,現在我可以繼續我的項目。非常感激。 – RLS 2014-12-03 12:34:17