CLOVER🍀

That was when it all began.

PythonのDB API 2.0(PEP 249)って?

これは、なにをしたくて書いたもの?

PythonにはデータベースにアクセスするためのAPIとして、DB APIというものがあるようです。

その実装を直接扱ってもいいのですが、メモとしてDB APIというテーマでひとつまとめておくことにしました。

DB API 2.0

実際に使われているのは、DB API 2.0(PEP 249)と呼ばれているもののようです。

PEP 249 – Python Database API Specification v2.0 | peps.python.org

DB APIは、端的に言うとPythonにおけるデータベースアクセスのための標準APIです。DB API 2.0に準拠した実装とすることで、一貫したAPI
モジュールを利用でき、理解を容易にしたり、データベース製品間で移植性の高いコードを実現することを期待しているようです。

その一方でimport文などを含めて実装を隠してくれるかというとそうではなく、モジュールの名前などは実装側の情報が露出します。
このあたりは仕方ないでしょうね。

各データベースごとに、どんな実装がある?

各データベースごとにどのような実装があるのかを確認する方法ですが、PythonWikiにデータベースに対するインターフェースの
ページがあります。

DatabaseInterfaces / Database Interfaces for Relational Database Systems

こちらからたどれる各ページを見ると、データベースごとのDB API 2.0に対応したドライバーを一覧することできます。

たとえばMySQLPostgreSQL

SQLiteの場合は、Python自体に組み込まれていたりします。

sqlite3 --- SQLite データベースに対する DB-API 2.0 インターフェース — Python 3.10.13 ドキュメント

MySQLPostgreSQLといったデータベースのDB API 2.0準拠のドライバーの数を見てみると…多いですね…。同じデータベースに対して、
たくさんのドライバーがあります…。

どうしてこんなにたくさんあるのか?どういう特性さがあるのか?は個々に見ていくことになるわけですが、このPythonWiki
そのとっかかりとしては参考になるのではと思います。

このページを知っているかどうかで見える全体像が変わる気がしたので、まずはこのテーマだけで1回押さえておこうと思いました。