django_migrationsテーブルについて

django_migrationsはマイグレーション履歴を保持するテーブル。 しかし、意外とドキュメントに説明はない。 主にチュートリアル part 2 に以下の説明がある通りである。 Django tracks which ones are applied using a special table in your database calle…

psqlコマンドが使えなかったがPATHを追加する必要があったという話

PostgreSQLをターミナル上で動かす際にpsqlというものがあります。 このpsqlが使えなかったケースがあり、結論としてはPATHが通っていなかったという状態でした。 Mac Ventura 13.6とHomebrewは4.2.17 の環境で確認しました。 また、以下の参考記事と内容は…

マイグレーションの実行前後ではshowmigrationsを実行しよう

Djangoのマイグレーションの実行状態を確認する方法として、showmigrationsがあります。 https://docs.djangoproject.com/ja/5.0/ref/django-admin/#showmigrations コマンドは以下のように実行します。 python manage.py showmigrations 以下のように実行さ…

マイグレーションで出力されるSQLを確認する方法

DjangoでDBに関連した操作をするとき、django-adminのmakemigrationsでマイグレーションファイルを作成して、migrateでマイグレーションを実行します。 そのマイグレーション実行時に実行されるSQLを確認するには、sqlmigrateを利用します。 Django4.2で検証…

django-admin startproject ではディレクトリを指定できる

きっかけはDocker, docker-composeを利用してコードを書いてみようと思ったときに、公式サンプルのコードを見ての疑問でした。 sudo docker compose run web django-admin startproject composeexample . https://github.com/docker/awesome-compose/tree/ma…

Djangoのログ出力について

先週投稿したOneToOneFieldの裏側で発行されているSQLを確認する の中でSQLをログ出力できるようにしていました。 そこについて、コピペで動いた!状態だったので、脱却するために調べました。 結論 DjangoではPythonのloggingを利用しています。 logging.co…

OneToOneFieldの裏側で発行されているSQLを確認する

この記事は(第157回)Python mini Hack-a-thon(ハイブリッド) の記事です。 先週、こちらの記事を投稿したところ、先輩からアドバイスをもらいました。 どんなSQLが実行されているか出力しながら検証すると理解が深まるかなと思いました。— かしゅー (@kashew…

OneToOneFieldを使うと関連モデルから属性へアクセス出来るようになる

www.youtube.com Multiple User Types With Custom Data Fields | Djangoという動画中に出てくるコードを見て、自分にとっては謎の挙動だったので調べました。 具体的には以下のようなコードが動画中で書かれていました。 class DriverMore(User): user = mo…

set型について

個人的にはPythonでなにかとlistを利用することが多かったのですが、set型について知って、改めて適切な型を利用するのが大切だなと感じました。 set型は以下のような特徴を持ちます。 順序がない 挿入順序、要素位置は保持しない 重複を削除できる 和集合や…

on_deleteはデータベース制約を作成しない

DjangoのModel定義のon_deleteについて改めて分かったことを簡単にまとめます。 以下のような要点を改めて知る機会がありました。 マイグレーション実行の有無は関係ない Modelに記述したかどうかで処理が決まる データベースにはon_deleteの内容は反映され…

DjangoのQuerySetのdelete()について理解する

QuerySetのdelete()の挙動について教えてもらった & 自分でも改めて手を動かして理解してみました。 結論 delete()は単純に指定したModelが削除されるだけではなく返り値も存在します(=ここがまずちゃんと分かっていなかった所でした)。 具体的にはタプル…

DjangoでQuerySetを試しに組み立てる際にはdjango-extensionsのshell_plusを利用しよう

Djangoを利用するとき、QuerySetを利用してSQLを組み立てるケースが多いと思います。 しかし、QuerySetの経験に乏しいと、SQLがイメージできていても、どういうQuerySetを書けば良いか、というのがまだ判断できないケースも存在すると思います。 動作確認実…

DjangoでDB接続する時はdbshellを使おう

DjangoにはDB接続周りの処理をラッピングしてくれるdbshellというコマンドがあります。 https://docs.djangoproject.com/en/5.0/ref/django-admin/#dbshell 使い方 python manage.py dbshell とするとDBへ接続して対話シェルを開いた状態へ。 python manage.…

QuerySet.queryで手軽にSQLを確認する

DjangoでSQLを確認する方法として一番手軽だなと思ったのが.queryを利用したSQL出力でした。 以下のようにQuerySetに対して.queryと記述することで実行される予定のSQLを確認することが出来ます。 python manage.py shell >>> from snippets.models import S…

venvで環境構築する

普段何気なく利用している、venvを利用した環境構築について簡単にまとめてみました。 venvを利用するメリット そもそも最初期は「なんで直接PCにインストールしたらいけないの?面倒くさくない?」と思っていたので、まずはそのメリットを説明します。 他の…

pip install httpieが失敗した時の備忘録

DRFのTutorialを実行していく中で起こった内容の記録と暫定対処法 結論 これを読む人は、これが記事執筆時点の正攻法ではないことを認識ください MULTIDICT_NO_EXTENSIONS=1 pip install multidict pip install httpie を実行することで、インストール可能に…

DRFを触ってみた

はじめに Django REST framework(略称 DRF)を触ってみました。 https://www.django-rest-framework.org DRFはDjangoでREST APIを作成する時に利用する有名なライブラリです。 今までちゃんと触ったことがなかったので、改めて学習してみました。 まずはQui…

Docker(docker-compose)のhealthcheckを試してみた

背景 自作のDocker, docker-composeを利用したアプリケーションで、docker-compose内でdepends_onを利用 + アプリケーション側でチェックする仕組みを作っていましたが、これだけでは不足してたことと、healthcheckというものがあると聞いたので試してみまし…

2023年のふりかえり

2023年のふりかえり もう気がつけば2023年の年末ですね。 他の人のふりかえり記事を読んでいると自分もこの1年をふりかえりたくなったので、記事を書きました。 私の今年1年を自分なりに3行にまとめてみるとこんな感じになりました。 転職した DjangoCongres…

DjangoCongress JP 2023 に登壇しました

はじめに 今回、10/7にサイボウズ東京オフィスにて開かれたDjangoCongress JP 2023 にて登壇してきました。 内容はこちら。 Djangoを仕事で使っていくために学んだこと どういう内容か 「Djangoを仕事で使っていくために学んだこと 」と言うタイトルで、 私…

石川旅行記

石川旅行 7月17日、18日に妻と一緒に石川県へ旅行してきました。 行ったところ 近江町市場 金沢城公園 兼六園 金沢21世紀美術館 ひがし茶屋街 山代温泉 片山津温泉 最寄駅を6:23の電車で出発し、9:38に金沢駅着。 金沢駅の第一印象は「結構小さい」でした。 …

東京旅行記

はじめに 2023年7月1日から6日まで東京に行ってきました。 以前はPyConで東京に行きましたが、その時に会えなかった人もたくさんいるので、この機会に連絡を取らせてもらって、たくさんの人と会う事が出来ました。 たくさん人に会えてMPがめちゃくちゃ回復し…

ValueObjectについて調べてみた

Value Objectについて調べてみた GW、せっかくなので勉強してみよう、と意気込んだ結果色々と手を出して、気がついたらValue Objectについて調べてました。 どうしてこうなったのかと説明をしつつ、少し記事にしてみます。 ※この記事は定義の良し悪しについ…

内包表記とyieldそしてジェネレータについて

内包表記とyieldそしてジェネレータについて こんにちは、Yumihikiです。 Pythonを使う中で抑えておきたいテクニック、概念を学んだのでアウトプットします。 この記事で学べること 内包表記という概念 yieldを使うメリット ジェネレータとは何か 今回の題材…

ミノ駆動本_読書py[14]の学び

こんにちは、Yumihikiです。 本日はid:nikkie-frnext と共同主催中のミノ駆動本_読書py[14]にて色々と学びがあったのでほぼメモですが、どんなことが挙がったのか書いておきます。 pythonista-books.connpass.com タプルとリストの違いやあれこれ タプルは不…

Whisper AIを触ってみた

こんにちは、Yumihikiです。 最近GPT-4の勢いが凄いですね。 今日も起きたらGitHub Copilot Xの発表が流れてきて、今一番HOTだなと思います。 github.blog そのGPT-4が作っているWhisper AIを触ってみました。 openai.com 以前、 @nikkie-frnext さんが記事…

PyneconeというOSSフレームワークを触り始めました

こんにちは、Yumihikiです。 久しぶりに技術面の学習が再開出来たので、今日は気になったフレームワークについて紹介します。 その名もPyneconeです。 リポジトリ https://github.com/pynecone-io/pynecone 今話題のOpenAIによるGPT-4の発表の中でPyneconeに…

命名:考

先日、開催中の勉強会「ミノ駆動本_読書py」で11章「コメント」を読みました。 pythonista-books.connpass.com コメントそのものではなかったですが、メソッド名の話をした時に面白い学びがありました。 参加者の方から以下の投げかけをしてもらいました。 …

エンジニアと人生コミュニティと私の1年

エンジニアと人生コミュニティと私の1年 こんにちは、Yumihikiです。 この記事はエンジニアと人生アドベントカレンダー#1の3日目の記事です。 adventar.org 明日は米本剛士さんです! はじめに 今回、どうしても書きたいことが2つあったので2つをまとめた記…

PyConJP2022参加記事

PyConJP2022参加記事 2022/10/14-15(16)に開かれたPyConJPに参加してきました! 2022.pycon.jp ※正確には16日はスプリントです。 今回私は初めての東京のカンファレンスに参加しました。 勢いが凄く、セッション・スポンサーブース・パーティと楽しませても…