0
私たちは、プロジェクトのためにSQLalchemyからpeeweeに移行する必要があるかどうかを調べています。プロパティの遅延読み込みを無効にして、実行されたクエリで明示的に結合された場合にのみロードされるようにしたいと考えています。例えば:peeyeeの遅延読み込みを無効にする
for topping in Topping.select().where(Topping.stock > 0):
print " - %s (%s): %s pieces left" % (topping.name, topping.category.name, topping.stock)
プリント:
- モッツァレラ(チーズ):100個の
- ペパロニ(肉)を左:60個は を左50個は
- バジル(ハーブ)を左
私の質問では明示的にToppingCategoryに参加しませんでしたが、名前を取得するようです。これを無効にする方法はありますか?
@coleiferをクリアします。私の質問は、開発者がフェッチせずにカテゴリにアクセスしようとするとエラーを発生させる方法があるかどうかです。また、オブジェクト全体をロードせずにカテゴリIDを取得する方法はありますか?ありがとう – valanto
はい、カテゴリIDがデフォルトで選択されます。あなたは "topping.category_id"を使ってそれにアクセスすることができます。例外を発生させることに興味がある場合は、テストでassertQueryCountがどのように実装されているかを見ることができます。基本的には、クエリログハンドラを接続し、ログメッセージの数を調べます。また、execute_sql()をmonkeypatchすることもできます。 – coleifer