Pythonでオブジェクト/インスタンス/変数の存在をエレガントにチェックし、同時に存在する場合は変数に代入する方法は?
2023-08-21 20:36:36
質問
私はSQLAlchemyを使ってデータベースにデータを入力していますが、しばしば、処理の前にデータベースにormオブジェクトが存在するかどうかをチェックする必要があります。これは型破りな質問かもしれませんが、私自身、このパターンによく遭遇することに気づきました。
my_object = session.query(SomeObject).filter(some_fiter).first()
if my_object: # Mostly in databases...
# Juchee it exists
# process
else:
# It does not exist. :-(
my_object = SomeObject()
# process
私とは <強い 夢想 のようなものでしょう。
if my_object = session.query(someObject).blabla.first():
# if my_object is None this scope is left alone
# if my_object is not None I can work with my_object here...
私はこの構文が間違っていることを知っていますが、私はこの例で何を意味するのかを説明したかったのです。任意の等価な方法は、私が幸せになる。
このパターンのためのエレガントな python アプローチはありますか?この質問は SQLAlchemy だけでなく、同等のシナリオに向けたものです。
目を閉じて "Post your question" を押して、賢い人々と心の中の pythonistas が、不適切かもしれないことを尋ねたために私を追い詰めるのを待ちます。 ;-)
どのように解決するのですか?
Existクエリを効率的に実行したい。
(ret, ), = Session.query(exists().where(SomeObject.field==value))
Mike Bayerのブログ記事で説明されています。
http://techspot.zzzeek.org/2008/09/09/selecting-booleans/
タプルを結果にしたくない場合は、scalarを使用することができます。
ret = Session.query(exists().where(SomeObject.field==value)).scalar()
関連
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonでオブジェクトが属性を持つかどうかを知る方法
-
[解決済み] 文字列が空かどうかを確認する方法は?
-
[解決済み] オブジェクト名の前のシングルアンダーコアとダブルアンダーコアの意味は何ですか?
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み] スクリプトを実行しているPythonのバージョンを確認するにはどうしたらいいですか?
-
[解決済み] Pythonでディレクトリが存在するかどうかを確認する方法
-
[解決済み] Pythonでnullオブジェクトを参照する
-
[解決済み] 変数が存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] Pythonの構文に新しいステートメントを追加することはできますか?
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] 辞書のキーと値を交換するにはどうすればよいですか?
-
[解決済み] Python 2.7サポート終了?
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] Django filter queryset __in for *every* item in list
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複