読者です 読者をやめる 読者になる 読者になる

CUBE SUGAR CONTAINER

技術系のこと書きます。

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

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

Python: Alembic をプロジェクトの途中から導入する

今回は Python のデータベースマイグレーションツールの Alembic について。 Alembic を使うとデータベースのスキーマをマイグレーションスクリプトにもとづいて管理できる。 マイグレーションスクリプトというのは、スキーマのバージョンを現在の状態から進…

SQL: ナイーブツリーと経路列挙モデル

今回のエントリは以前かいた SQL のアンチパターン「ナイーブツリー」に関する記事の続き。 blog.amedama.jp 再帰クエリをサポートしていない RDBMS で再帰的な構造を表現するための解決策のひとつ経路列挙モデルを扱う。 使った環境は次の通り。 $ sw_vers …

SQL: ナイーブツリーと再帰クエリ

今回は「SQLアンチパターン」の中で紹介されているナイーブツリーというアンチパターンについて見てみることにする。 www.oreilly.co.jp 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.11.4 BuildVersion: 15E65 $ mysql --ve…

Python の DB-API (Database API) とは何か

Python でデータベース周りについて調べていると、ドキュメントの中にちょくちょく DB-API (2.0) という単語が出てくる。 果たしてこの DB-API とは何者なのか、というのが今回の主題。 結論から言ってしまうと、DB-API というのは Python でリレーショナル…

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

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

CentOS7 に mysqlclient (MySQL-python fork) をインストールする

mysqlclient は MySQL-python からフォークして Python 3 に対応したもの。 今回はそれを CentOS7 にインストールしてみる。 PIP をインストールする まずは Python のパッケージマネージャである PIP をインストールする。 get-pip.py を使ってもいいけど、…

MySQL を使ってリレーショナルデータベースの悲観的・楽観的排他制御を試してみる

リレーショナルデータベースの排他制御は、複数のトランザクションが同時に同じリソース (テーブル・行) に対してアクセスしても内容の整合性が崩れないようにするために行うもの。 また、排他制御のやり方には悲観的と楽観的のふたつがある。 悲観的排他制…