2020-06-01から1ヶ月間の記事一覧
概要 Django+factory-boyでテストデータを作成する際に、結合先のテーブルに主キーが同一のレコードを複数INSERTしようとして「Duplicate entry」が発生してしまう事象を回避する方法について書く。(詳細は後述) 前提 Django: 3.0.7 factory-boy: 2.12.0 結…
概要 Djangoで、一度「migrations」ディレクトリを削除した後、もう一度 $ python manage.py makemigrations を実行した。 「migrations」とその配下のファイルが再び作成されることを期待していたが、実際には「No changes detected」と表示されるようにな…
概要 Djangoで全てのマイグレーションを全てロールバックして、DBを初期状態にしたいと思ったが、調べたところ全てロールバックするコマンドは存在しないようなので、xargsコマンドと合わせて実現した。 方法 以下のコマンドを実行する。 $ python manage.py…
概要 Djangoで以下のコマンドでユニットテストを実行しようとした。 $ python manage.py test すると、「ImportError: 'tests' module incorrectly imported from...」というエラーが発生した。 原因 以下のように、「tests.py」と「tests」ディレクトリが両…
概要 Django REST frameworkでAPIを開発している際に、POSTのAPIなのでコマンドラインからcurlでデバッグしようとしたところ、掲題の件でハマったのでメモ。以下の認証を突破する必要がある。 ユーザー認証 CSRF認証 前提 django-debug-toolbarがインストー…
概要 Djangoでマイグレーションを一部だけ適用したいケースがあったので、方法をメモ 手順 マイグレーションの一覧を表示する。 対象のマイグレーションのアプリ名とIDを確認する必要があるので、以下のコマンドを実行して確認する。 $ python manage.py sho…
概要 DjangoでAmazon SESを使ってメール送信する方法を検証したので、手順を残しておく。 ※ あくまで検証用の手順です。I AMの設定やメール送信時のエラーハンドリングは考慮していません。 前提 「django-ses」というパッケージを使用する。 github.com 環…
概要 クローラーで取得したHTMLコンテンツをMySQLに保存する際に、深く考えずにカラムタイプをTEXT型にしていたら、「Data too long for column」が発生した。 環境 MySQL 5.7.30 原因 MySQLのTEXT型の最大長は65,535(約6万)文字とのこと。また、以下のよう…
概要 SQLAlchemyでMySQLにデータをInsertしようとしたところ、以下のエラーが発生した。 エラーの原因は調査できていないが、とりあえず解消方法は見つかったので備忘録としてメモしておく。 sqlalchemy.exc.InvalidRequestError: Table 'table_name' is alr…
以下、f-stringを使うと1行できれいに書ける。(Ver3.6以降) from datetime import datetime file_name = f"result.{datetime.now():%Y%m%d%H%M%S}.csv" print(file_name) ・実行結果 result.20200602183258.csv
Pythonのモジュールのimportの仕組みについて、ちゃんと理解していなかったので勉強した。 1.Pythonがモジュールを検索するパス Pythonはsys.pathというリスト型の変数に含まれるパスを起点にモジュールを検索する。詳細は以下の公式ドキュメントを参照docs.…