使用in_的sqlalchemy过滤器

teg*_*ggy 0 python sqlalchemy

是否有更有效的方法来执行以下操作?我更感兴趣的是知道是否有办法设置"mylist"以匹配任何东西,如果day等于'all',因为在其他情况下,"mylist"可以包含更多元素.

if day == 'all':
    mylist = ['monday','tuesday','wednesday','thursday','friday','saturday','sunday']
else:
    mylist = [day] # day equal to one of the above

records = meta.Session.query(Transaction).filter(Transaction.day.in_(mylist)).all()
Run Code Online (Sandbox Code Playgroud)

Dav*_*d Z 7

如果它等于那么就不过滤那天'all'呢?

query = meta.session.query(Transaction)
if day != 'all':
    query = query.filter(Transaction.day == day)
records = query.all()
Run Code Online (Sandbox Code Playgroud)

  • 此外,如果day =='all',则可能需要过滤掉空值,即query = query.filter(Transaction.day!= None),如果day可以为空. (2认同)