0
我们正在调查我们是否应该从SQLalchemy转到我们项目的peewee。我们希望禁用属性的延迟加载,以便只有在显式连接到执行的查询中时才加载它们。例如:在peewee中禁用延迟加载
for topping in Topping.select().where(Topping.stock > 0):
print " - %s (%s): %s pieces left" % (topping.name, topping.category.name, topping.stock)
打印:
- 的Mozzarella(奶酪):50片左
- 罗勒(草本):100张左
- 辣(肉):60片左
在我的查询中,我没有明确加入ToppingCategory,但它似乎取回它的名字。有什么办法可以禁用它吗?
清除@coleifer。我的问题是,如果开发人员尝试访问该类别时没有获取该类别,是否有提升错误的方法。也有没有办法获得类别ID而无需加载整个对象?谢谢 – valanto
是的,默认情况下会选择分类ID。 YOu可以使用“topping.category_id”访问它,而不会产生查询。如果您对引发异常感到好奇,您可以在测试中看到“assertQueryCount”是如何实现的。基本上附加一个查询日志处理程序,并查看日志消息的计数。 YOu也可以monkeypatch execute_sql()。 – coleifer