SQLAlchemyとORM について¶
SQLAlchemyを使ってみよう¶
Pythonには標準のsqlite3モジュール以外に、データベースとやり取りするためのライブラリーが多数あります。
その中で最も有名なライブラリーがSQLAlchemy
です。
「SQL + Alchemy(錬金術)」の名の通り、多彩なデータベースのプログラミングを可能にします。
SQLを書かずにデータを操作する¶
SQLAlchemyは、SQL文の組み立てを自動で行ってくれます。 ライブラリーが用意している関数を使うことでSELECT文やINSERT文などが実行されます。
ORM(Object-Relational Mapping)¶
SQLAlchemyのように、データベースとPythonのオブジェクトの関連付け(マッピング)をするライブラリーのことを ORM(ORマッパー) と呼びます。
users
テーブルとUser
クラスの関連付けを確認しましょう。
usersテーブルの定義
id : integer (auto increment)
name : varchar(45)
kana : varchar(45)
note : varchar(100)
Userクラスの定義
class User(Base):
__tablename__ = 'users' # Userクラス ←→ usersテーブル
# 変数名 ←→ カラム名
id = Column(Integer, primary_key=True)
name = Column(String)
kana = Column(String)
note = Column(String)
オブジェクト(Object)とリレーショナル・データベース(RDB)の関連付け(Mapping)を行うことから、ORM(Object-Relational Mapping)と呼ばれます。
ORMを使うメリット¶
ORMには以下のようなメリットがあります。
Pythonのオブジェクトを通してSQLを扱うことができる¶
ORMが自動でSQLを生成してくれるので、プログラムがPythonの世界で完結するようになります。 コマンドや実行結果をPythonから扱うことができ、柔軟なデータ操作が行えます。
データベースごとの違いを吸収してくれる¶
データベースにはMySQL
やPostgreSQL
などいくつかの種類があり、コマンドなどに違いがあります。
ORMは自動で使用するデータベースに合わせたSQLを生成して実行してくれます。
また、データベースによるコマンドの違いを「SQLの方言」と呼びます。
ORMはSQLを多用する複雑なアプリケーションを実装するときに力を発揮します。