chevron_left

メインカテゴリーを選択しなおす

cancel
きり丸
フォロー
住所
未設定
出身
未設定
ブログ村参加

2022/07/22

arrow_drop_down
  • 【障害】SentryのtracePropagationTargetsの指定を誤った

    Sentryの設定を軽い気持ちで変更したところ大規模障害につながってしまったので、もう忘れないようにするためのメモ。 環境 @sentry/angular-ivy 7.144.0 発生事象 S3へのファイルアップロードに失敗した。 原因 tracePropagationTargetsの指定を誤ってしまい、S3のファイルアップロード時にBaggageとSentry-Traceのリクエストヘッダが付与されてしまったため。また、S3側でAccess-Control-Allow-Headersを指定していたので、BaggageとSentry-Traceが付与されているとCORSエラーが発生して、Htt…

  • PydanticのJsonはそのまま使わないほうがいい

    始めに PydanticにはJsonという便利な型があります。便利ではあるのですが、素のJson型では開発しづらい点があったので自分のアプリケーションでは拡張して使っています。 今回の記事では何に困ったのか、どのように拡張したのかを記載します。 環境 Python 3.12.4 FastAPI 0.114.2 Pydantic 2.9.1 ユースケース フロントで自由なデータ構造を定義してバックエンドとしては単純に保存する。また、フロントで取り出せるようにバックエンドで保存したデータ構造をフロントに返却する。 困ったケース PydanticのJsonで定義するとフロントで定義した自由なデータ構…

  • SQLAlchemyで大文字小文字を区別せず比較する(lower, ilike)

    始めに email等の項目は大文字小文字を区別せずに比較したいことがあります。 その場合には小文字化して比較することになります。今回の記事では、PythonのSQLAlchemyで使用するlowerとilikeを素振りします。 環境 Python 3.12.3 SQLAlchemy 2.0.31 lower DB側で補完しているデータもlowerとするときにはfunc.lowerを使用します。渡すパラメータに関してはPythonのlowerを使用してください。 select(User).where(func.lower(User.email) == parameter.lower()) ili…

  • SQLModelで親と一緒に子テーブルを削除する(cascade_delete, ondelete)

    始めに 外部キー制約があるレコードを削除するとき、参照元テーブルよりも参照先テーブルを先に削除する必要があります。 Railsの場合、次のようにdependentに定義しておくと、Parentテーブルを削除したタイミングでChildテーブルも削除されます。 class Parent < ApplicationRecord has_one :child, dependent: :destroy end class Child < ApplicationRecord belongs_to :parent end 今回の記事では、PythonのSQLModelを使用したときに、Parentテーブルを…

  • SQLAlchemyではselectinloadを使うのが安定

    始めに 自分用メモ。sqlalchemyではeager loadをする際にsubqueryloadとselectinload等々さまざまなload方法を指定できます。 しかし、片方はdeprecatedまでは設定されていませんが、非推奨なloading方法なのでそれを忘れないようにするための記事です。 環境 Python 3.12.4 SQLAlchemy 2.0.32 実装 selectinloadの方が推奨されている。SQLAlchemyがV1のころはsubqueryloadも使用されていたが、V2になってからは非推奨な場面が増えています。 もし、複数キーで突合したい場合はselectin…

arrow_drop_down

ブログリーダー」を活用して、きり丸さんをフォローしませんか?

ハンドル名
きり丸さん
ブログタイトル
きり丸の技術日記
フォロー
きり丸の技術日記

にほんブログ村 カテゴリー一覧

商用