我已经使用sqlalchemy几年来替代Django模型了。我发现将自定义方法附加到这些模型非常方便
即
class Widget(Base):
__tablename__ = 'widgets'
id = Column(Integer, primary_key=True)
name = Column(Unicode(100))
def get_slug(self, max_length=50):
return slugify(self.name)[:max_length]
如果模型有几十个复杂的方法(50-75行),那么在执行像session.query(Widget)
这样的事情时是否会有性能损失?这些被加载到每个返回的行的内存中,将这些较少使用的方法移动到辅助函数并导入为必要的更高效吗?
def some_helper_function(widget):
':param widget: a instance of Widget()'
# do something
谢谢!
答案 0 :(得分:1)
使用SA仅使用session.query(...)
从数据库加载对象时,不会有任何性能损失
并且你绝对不应该为了性能而将任何方法移动到任何辅助函数,因为这样做基本上会破坏模型的面向对象的范例。 / p>