避免在 SQLAlchemy 中解包模式
Avoiding Unpacking Patterns in 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()
有没有办法不用检查 unpack
和 multiple
而是让这段代码更简洁?
您可以利用 filter()
method if the given filter
isn't dictionary. See source code 查看 filter_by()
是如何调用 filter()
方法的。
在我的 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()
有没有办法不用检查 unpack
和 multiple
而是让这段代码更简洁?
您可以利用 filter()
method if the given filter
isn't dictionary. See source code 查看 filter_by()
是如何调用 filter()
方法的。