CUBE SUGAR CONTAINER

技術系のこと書きます。

SQLAlchemy

Python: SQLAlchemy のテーブルに後からインデックスを追加する

今回は、Python の O/R マッパーである SQLAlchemy について。 テーブルを定義した時点のモデルには無かったインデックスを、後から追加する方法についてメモしておく。 なお、実務における RDBMS のスキーマ変更に関しては、Alembic のようなフレームワーク…

Python: MLflow Tracking を使ってみる

MLflow は MLOps に関連した OSS のひとつ。 いくつかのコンポーネントに分かれていて、それぞれを必要に応じて独立して使うことができる。 今回は、その中でも実験の管理と可視化を司る MLflow Tracking を試してみることにした。 機械学習のプロジェクトで…

Python: データパイプライン構築用フレームワーク Luigi を使ってみる

最近になって、バッチ処理においてデータパイプラインを組むためのフレームワークとして Luigi というものがあることを知った。 これは、Spotify という音楽のストリーミングサービスを提供する会社が作ったものらしい。 似たような OSS としては他にも Apac…

Python: SQLAlchemy の生成する SQL をテストするパッケージを作ってみた

SQLAlchemy は Python でよく使われている O/R マッパーの一つ。 今回は、そんな SQLAlchemy が生成する SQL 文を確認するためのパッケージを作ってみたよ、という話。 具体的には、以下の sqlalchemy-profile というパッケージを作ってみた。 このエントリ…

Python: 環境ごとの依存ライブラリをセットアップスクリプトの extras_require で管理する

Python のパッケージを作っていると、特定の環境だけで必要となるパッケージが大抵はでてくる。 例えばデータベースを扱うアプリケーションなら、使う RDBMS によってデータベースドライバのパッケージが異なる。 あるいは、インストール先の Python のバー…

Python: SQLAlchemy + mysqlclient (MySQLdb) でマルチバイト文字を扱う

今回は Python の O/R マッパーである SQLAlchemy と MySQL ドライバの mysqlclient を使ってマルチバイト文字を扱うときの注意点について書いてみる。 ただし RDBMS については MySQL ではなく、代わりに MariaDB を使った。 注意点というのを先に書いてし…

Python: Alembic でデータベースのスキーマ変更を自動検出する

Alembic は Python で書かれたデータベースマイグレーションツール。 アプリケーションを開発していると、データベースのスキーマ変更はちょくちょくある。 そうした場合、よくあるパターンでは更新内容を SQL のテキストファイルで管理したりする。 それに…

Python: SQLAlchemy で悲観的・楽観的排他制御を試す

以前、MySQL を使ってリレーショナルデータベースの悲観的・楽観的排他制御を試してみた。 今回は、その悲観的・楽観的排他制御を Python の O/R マッパーの SQLAlchemy で実際に使ってみることにする。 blog.amedama.jp 使用する MySQL のバージョンは次の…