是否有单行代码来处理以下情况:
def queryByAttr(attr1,attr2=None):
if attr2 is None:
session.query(Foo).filter(Foo.attr1==attr1)
else:
session.query(Foo).filter(Foo.attr1==attr1).filter(Foo.attr2==attr2)
答案 0 :(得分:1)
使用链接有一个更易读的多线程:
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))
所有这一切假设您永远不需要查询来返回Foo
值为attr2
的{{1}}。
答案 1 :(得分:0)
也可以使用。
def queryByAttr(attr1, attr2=None):
return (session.query(Foo).filter((*[Foo.attr1==attr1, Foo.attr2==attr2] if attr2 else *[Foo.attr1==attr1])))