2014-04-01 68 views

回答

0

有使用鏈接更具可讀性多內膽

def queryByAttr(attr1, attr2=None): 
    q = session.query(Foo).filter(Foo.attr1==attr1) 
    if not(attr2 is None): 
     q = q.filter(Foo.attr2==attr2) 
    return q 

,你可以把它(相當長)一個班輪還有:

def queryByAttr(attr1, attr2=None): 
    return (session.query(Foo).filter(Foo.attr1==attr1)) if (attr2 is None) else (session.query(Foo).filter(Foo.attr1==attr1).filter(Foo.attr2==attr2)) 

這一切都假設您從不需要查詢來返回那些具有attr2NULLFoo

0

也可以使用。

def queryByAttr(attr1, attr2=None): 
    return (session.query(Foo).filter((*[Foo.attr1==attr1, Foo.attr2==attr2] if attr2 else *[Foo.attr1==attr1])))