qtatsuの週報

初心者ですわぁ

Python

【Django】例文で理解するselect_relatedとprefetch_relatedパターン集

前書き 参考リンク 環境 事前準備: モデルの作成とデータ投入 No.0 発行されたSQLを確認する No.1 select_relatedで親を取る No.2 select_relatedで親の親を取る No.3 prefetch_relatedで複数件の多を取る No.4 Prefetchオブジェクトで多をfilter No.5 prefe…

【Python】並び順を無視してlistの要素を比較する方法3つ【sort, assertCountEqual, deepdiff】

(※ qiitaに書いた記事の、削る前バージョンです) 【Python】並び順を無視してリストを比較するテスト(DeepDiff) - Qiita 結論: deepdiffを使う pytest unittest 前書き 参考リンク 環境 文字列のリスト: sortをつかう. 辞書のリスト: keyを指定してソートす…

【Python】コミット差分のみblackで整形する 【darker】

前書き コードの整形はフォーマッタに任せたいものです。 理想的には、全員が同じスタイルでコードを整形できるようにpre-commitなどを利用してコミット時にフォーマッタを自動実行します。 しかしプロジェクトの途中参加など、導入が難しいケースもあると思…

【Python】テスト時にデフォルト引数の値を差し替える

前書き 参考リンク 環境 前置き: テスト対象 なんどもリトライする関数 テスト: 失敗するテストに時間がかかる 方法0. テストを分ける 方法1. __defaults__を書き換える 方法2. partialを使ってデフォルト引数を書き換える まとめ 前書き この記事は Calenda…

watchdog、おまいだったのか。いつも、ファイルを監視してくれていたのは…【Python】

前書き 参考リンク 環境 watchdogが使われているライブラリ Flask pytest-watch watchdogを自分でも使ってみる。 前置き: tmuxと一緒に使うのがオススメ. 例1: watchmedoでコマンドを登録してみる 例2: ファイルの種類によって異なるコマンドを実行する! 例…

【Python】bytesとstrを真面目に理解する

前書き 参考リンク 環境 bytesとは何なのか 1. 前置き: bytesは文字列の様に扱うことができる 2. bytesはその名の通り、バイト(整数)の配列 3. bytesが文字列のように出力されるのは__repr__のため strとは何なのか 1. 前置き: strはUnicode 2. chrとord 3. …

【python】深いネストのdictから値を取り出す

前書き 環境 参考リンク 1.単純なdictで頑張る 具体例 メリット デメリット 2. Box 具体例 存在しないKey問題はdefault_boxでカスタムできる。 キーつなぎ(パス)の再利用はbox_dotsで対処できる。 参考: Boxに類似したライブラリ 3. jmespath 具体例 メリッ…

pythonでJSON Linesを作る方法

前書き 参考リンク 環境 Pythonのみを使う方法 Pandasを使う方法 出力したjsonlファイルのlint(壊れてないかチェック) 結論 まとめ 前書き Json Linesというのは以下のような形式です。 {"name":"reimu","score":1} {"name":"marisa","score":1} JSON Lines…

【Python】f-stringとフォーマットの仕組みを特殊メソッド__format__から理解する。

前書き 参考リンク 環境 f-stringの例と用語 f-stringで使う用語のまとめ 最強コマンド: help('FORMATTING') フォーマットの仕組みを考える conversionフィールドは特殊メソッド__str__などを呼ぶ. f-stringの置換フィールド中では、__format__()メソッドが…

Pythonで個人用CLIツールを作成する

前書き GitHub 参考リンク 環境 setup.pyを作成する install_requires entry_points pipでインストールする retrunした値は標準エラーに出力される --editableオプションをつけるとコードへの変更が即反映される 実際の挙動 MuduleNotFoundErrorを回避する e…

Pythonの組み込み関数zipに渡したイテレータはコピーされず、元のイテレータが消費される

前書き 参考リンク 環境 本題: 何が起こるのか? zipにイテレータを渡した際の挙動を理解する 前書き タイトル通りの小ネタです。 この挙動を積極的に利用しているコードを散見するのですが、見るたびに混乱するので自分への戒めとしてまとめておきました。 …

【AWS Glue】custom classifierを利用してログファイルからデータを抽出/変換する!【AWS CLI】

前書き 環境 前提知識 Classifier 前準備(データの投入) 実際の手順 Databaseの作成 Classifierの作成 crawlerの作成 crawlerの情報確認 クローラの実行 ジョブの作成 & 実行 ジョブスクリプトの作成 ジョブの作成と確認 ジョブの実行 前書き この記事は、JS…

Djangoのstartprojectをテンプレ化して繰り返し使おう

前書き 環境 参考リンク テンプレートの作成の基本手順 テンプレートプロジェクトの立ち上げ プロジェクトの構成変更 プロジェクト名をプレースホルダーに変換 概要 一撃で変換するスクリプト テンプレートをもとに新規プロジェクト作成 方法 config以外の名…

Pythonのelasticsearchライブラリで遊んでElasticsearchと仲良くなる

前書き 参考リンク 環境 各種操作 接続とコネクションの確認 データの投入 と 取得 index操作 サーチ(複数件取得) カウント(条件にヒットするデータ件数の表示) 結果の項目の絞り込み: データの更新(一部アップデート) バルク操作 前書き 最近、業務でElasti…

DynamoDBから1MB以上のデータを取得する(boto3)

前書き 結論 参考リンク 環境 DynamoDB DynamoDBのセットアップ テーブルの作成 データの投入 補足: base64 scan用のデータ scanメソッドで1Mb以上のデータを取得する場合 queryメソッドで1MB以上のデータを取得する場合 注意: limit句がある場合には気をつ…

Django + Chart.jsなら、django-chartjsライブラリを使おう

前書き 所感 色の変更 get_colorsメソッド get_dataset_optionsメソッド options属性の付加 補足: 利用可能なview 前書き 最近、業務でDjango + Chart.jsを使ったシステムを作成しました。 Chart.jsは綺麗なグラフを簡単に作成することができ、またドキュメ…

Django: StreamingHttpResponseをHttpResponseと比較してみたまとめ

使い分けについての結論 (最後の考察で詳しくまとめています。) ファイルサイズが小さい様なら、HttpResponseを使う。 Djangoで巨大なファイルを作成する際には、StreamingHttpResponseを使わざるをえない。しかし可能な限り避けた方がよく、CSV出力はDjango…

サーバーサイド処理しているDataTablesをPDFで出力する

前書き 環境,ツールのバージョン 使用するツール 仕様と実装方針 プロジェクトの作成とインストール DataTablesでの表示(Server-side processing) DataTablesサーバーサイド処理の実装 PDF出力 余談: DataTablesのPDF出力機能 サーバーサイド: WeasyPrintを…

WeasyPrintでPDF出力するまでの環境構築(Django/Amazon Linux)

前書き 参考にさせていただいたリンク Amazon Linuxの立ち上げ 必要なライブラリのインストール 前準備 WeasyPrintを動かすための準備 必要なコードの作成とPDF出力 PDFを出力するViewとTemplates 確認 文字化けへの対応 日本語フォントのインストール フォ…

DRFで例外が発生してからレスポンスを返すまでの処理をカスタムする

DRFには、例外(Exception)をResponseの形で返す仕組みが備わっています。その個人的なノートです。 やりたいこと 本記事での各種ファイル カスタム処理を挟むことができる場所 (1) エラーから直接レスポンスを作る (2) 既存、もしくは作成した例外をraiseす…