2012年10月3日

Python の ORM いろいろ

概要

Python にはいくつか RDB のための ORM があるので現在時点で見つけた物の一覧表を作成してみた。

一覧

今回見つけた物で、ちゃんと利用されていそうな物は以下。

リンク ライセンス PofEAA 対応RDB バージョン Python3対応 概要
peewee MIT ActiveRecord PostgreSQL,MySQL,SQLite3 1.0.0(2012-08-26) × 比較的ライトなORM。
Django BSD ActiveRecord MySQL,Oracle,PostgreSQL,SQLite3 1.4.1(2012-07-30) × ORMを含むWebアプリケーションフレームワーク。ORMの出来が良く、単体でも利用できる。
SQLAlchemy MIT DataMapper DB2,ODBC,Oracle,PostgreSQL,MS SQL Server,MySQL,SQLite3,Sybase等(Supported Databases参照) 0.7.8(2012-06-17) 多くのRDBに対応。非常に高機能。
SQLObject LGPL ActiveRecord PostgreSQL,MS SQL Server,MySQL,SQLite3,Sybase 1.3.1(2012-05-25) × SQLAlchemyと比較されるORM。昔は良く利用されていたが、最近はSQLAlchemyの方が利用されている印象。
storm LGPL ActiveRecord PostgreSQL,MySQL,SQLite3 0.19(2011-10-05) × Ubuntuの開発支援をしているCanonical社が作成している比較的ライトなORM。
Elixir MIT ActiveRecord SQLAlchemyと同じ 0.7.1(2009-11-16) SQLAlchemyをActiveRecordパターンで使うためのラッパ。結構便利だが、最近はメンテナンスされていない。

感想

自分は普段はSQLAlchemyを主に利用していて、目的によってはElixirを改造した物を利用している。それ以外のORMをほとんど利用した事がないので、今回探したORMに関して機能を調査してみようと思う。

それぞれのソースとドキュメントを簡単に読んだが、stormとpeeweeは比較的利用される場面が似ている印象。stormはそれほど使いやすそうではない感じ。peeweeの方が簡単そう。
SQLObjectは、けっこう使い易そうだが、機能が多いのにドキュメントがいまいちな印象。
DjangoのORMはDjangoのバックエンドとして利用することが想定されているが、出来は良さげなので、すべてを極力一つのフレームワークの枠組みでやりたい人には向いているかもしれない。

2012/10/15追記:

この記事の後で各ORMを調査した記事を書いた。

blog comments powered by Disqus