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