概要
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を調査した記事を書いた。