12億円ほしい人のブログ

メガBIG当たらないかな

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