[解決済み] djangoでクエリセットから最初のオブジェクトを取得する最速の方法は?
2022-04-16 22:47:33
質問
Django でクエリセットから最初のオブジェクトを取得したい、あるいは
None
がない場合。 これを実現する方法はたくさんあり、どれもうまくいきます。 しかし、どれが最もパフォーマンスが高いのか、疑問に思っています。
qs = MyModel.objects.filter(blah = blah)
if qs.count() > 0:
return qs[0]
else:
return None
この場合、データベースを2回呼び出すことになるのでしょうか? それは無駄なような気がします。 この方が速いですか?
qs = MyModel.objects.filter(blah = blah)
if len(qs) > 0:
return qs[0]
else:
return None
もう一つの選択肢は
qs = MyModel.objects.filter(blah = blah)
try:
return qs[0]
except IndexError:
return None
これは、データベースの呼び出しを1回で済ませるもので、良いことです。 しかし、多くの場合例外オブジェクトを作成する必要があり、本当に必要なのは些細なifテストだけなのに、非常にメモリを消費することになります。
どうすれば、1回のデータベース呼び出しで、例外オブジェクトでメモリを消費することなく、これを実現できますか?
どのように解決するのですか?
Django 1.6 (2013年11月リリース)
が導入されました。
便利なメソッド
first()
と
last()
を返し、その結果生じた例外を飲み込んで
None
がオブジェクトを返さない場合。
関連
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] リストの要素数を取得する方法
-
[解決済み] オブジェクトの種類を決定しますか?
-
[解決済み] JavaScriptでオブジェクトのキー/プロパティの数を効率的にカウントする方法
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み] Pythonでパスから拡張子なしでファイル名を取得する方法は?
-
[解決済み] リストに値が存在するかどうかを確認する最速の方法
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python関数の高度な応用を解説
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】ValueError: xとyは同じサイズでなければならない
-
[解決済み] Django の filter と get は単一オブジェクトの場合?