📝 pytest で alembic のマイグレーションを行う方法

はじめに FastAPI と SQLAlchemy を利用して Web API 開発を行っていた際、SQLAlchemy のマイグレーションツールである alembic を利用していました。 ただ E2E テストを書こうとした際に、pytest 実行中に alembic でデータベースマイグレーションを行う方法が分からず模索していました。結果的にマイグレーションのやり方は分かったものの一応今後も利用するかもしれないため、その内容を記事として残しておくことにしました。 本記事内で利用しているソースコードを含む FastAPI プロジェクトを GitHub リポジトリ上にアップしておいたので、詳細を確認されたい方がいればご参照くださいませ。 alembic でマイグレーションを行う conftest.py にグローバルで利用するマイグレーション用の fixture を定義すれば OK です。 # conftest.py import os import alembic.config import pytest from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from sqlalchemy_utils import database_exists, create_database, drop_database # テスト用の初期データを定義した module を import する (必要があれば) # from .seed import users, contents # 指定したパラメータを用いて alembic によるデータベースマイグレーションを行う # 引数のデフォルト設定では全てのマイグレーションを実行するようになっている def migrate(migrations_path, alembic_ini_path='alembic....

June 24, 2021 · 2 分 · Me

📝 Pillow を使って画像に縦書きテキストを埋め込む

はじめに 縦書きテキストを画像に埋め込みたいと頼まれたので、 Python 製の画像処理ライブラリ Pillow を使ってサクッと実装してみました。 一応ソースコードは Gist にもアップ済みです ✍️ https://gist.github.com/nikaera/c1049708ff548b06cab0ae377adc4ac7 動作環境 Python 3.9.5 Pillow 8.2.0 画像に縦書きテキストを埋め込む まずは今回利用する Pillow を予めインストールしておきます。 pip install Pillow その後 main.py を作成して下記を入力します。 テキストを埋め込みたい画像を main.py と同じフォルダに sample.jpeg という名前で配置しておきます。 # Pillow の利用するモジュールのみをインポートする from PIL import Image, ImageDraw, ImageFont # 読み込みたいフォント情報を入力する font_name = "/System/Library/Fonts/ヒラギノ角ゴシック W0.ttc" font_size = 48 font = ImageFont.truetype(font_name, font_size) # テキストを埋め込みたい画像 sample.jpeg を読み込む im = Image.open('sample.jpeg') d = ImageDraw.Draw(im) # 画像に埋め込みたいテキスト情報を入力する # (後述するが、改行コードには未対応) text = "bifdLcFCKXtFJZmPZhzdefjhhYTtuJPAYsR" # 文章を改行するまでの文字数を入力する split_number = 11 # split_number で指定した文字数ごとに分割され配列に格納される # ref: https://qiita....

May 22, 2021 · 2 分 · Me