我有两张tablet1和t2。t1包含列“name”,而t2不包含。
我想打电话
def get(T, query_name):
return session.query(T).filter(T.name == query_name).all()
此函数的唯一调用是:get(t1,“some name”)或get(t2,null)——对于第二种情况,我希望忽略过滤器
解决方案是:
def get(T, query_name):
if query_name != NULL:
return session.query(T).filter(T.name == query_name).all()
else:
return session.query(T).all()
上面的代码还不错,但我经常重复这些代码(每次我查询时),我想知道是否还有其他简洁的方法。
1条答案
按热度按时间eit6fx6z1#
设置默认参数。根本没有
NULL
在python中,您需要None
. 您可以按顺序构建查询,因此这可能是一种更好的模式,您可以为查询提供一个默认参数query_name
:这与本例没有实质性的区别,但是如果您有很多可选参数,则会有很大的区别。