SQLAlchemy, psycopg2の役割についてのメモ
PythonからDBを操作する場合、SQLAlchemyを使用するケースが多いです。 PostgreSQLで使用してみたいと思い、SQLAlchemyのインストール方法とかをググったところ、psycopg2というライブラリもインストールが必要とのことでした。 それぞれのライブラリの役割がよくわからなかったので、調べてみました。
そもそも
1
プログラミング言語からデータベースにアクセスするには専用のソフトウェアが必要。
そのようなソフトウエアはドライバと呼ばれる。
プログラミング言語ごと、データベースごとに様々なドライバがある。
2
Pythonからデータベースにアクセス・操作するためのAPIの仕様を定めたものをDBAPIと呼ぶ。
この仕様に則り、APIが用意されることで、Pythonからは同じコードを使用して異なる種類のデータベースにアクセスすることができるようになる。(らしい。)
psycopg2
DBAPIの実装の1つで、PythonからPostgreSQLを利用するためのライブラリ。
ドライバでもある。(とChatGPTが言ってた。)
ちなみに、psycopg2を再実装してモダンな機能が追加されたpsycopg3もある。
SQLAlchemy
Python用のSQLツールキットかつORM(Object-Relational Mapping)ツール。
様々なデータベースエンジンとのやり取りを簡素化することができる。
なお、PostgreSQLを操作する場合は、内部でpsycopg2を使用している。なので、psycopg2もインストールする必要がある。
SQLAlchemyの内部実装
以下の構成要素があるらしい。
- Engine
- Pool
- Dialect
- DBAPI
詳細は以下参照 docs.sqlalchemy.org