避免SQLAlchemy中的解包模式

时间:2015-04-16 00:53:28

标签: python sqlalchemy

在我的SQLAlchemy包装器中,我倾向于拥有多余的代码块,这些代码涉及是否解压缩代码的重复逻辑。

例如

  def seek_entry(self, filter, model, multiple=False, unpack=False):
    if multiple:
      if unpack:
        return self.session.query(model).filter_by(**filter).all()
      else:
        return self.session.query(model).filter_by(filter).all()
    else:
      if unpack:
        return self.session.query(model).filter_by(**filter).first()
      else:
        return self.session.query(model).filter_by(filter).first()

有没有办法不用检查unpackmultiple,而是让这段代码更简洁?

1 个答案:

答案 0 :(得分:1)

如果给定的filter不是字典,您可以使用filter()方法。请参阅source code,了解filter_by()调用filter()方法的方式。