これは、なにをしたくて書いたもの?
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
文などを含めて実装を隠してくれるかというとそうではなく、モジュールの名前などは実装側の情報が露出します。
このあたりは仕方ないでしょうね。
各データベースごとに、どんな実装がある?
各データベースごとにどのような実装があるのかを確認する方法ですが、PythonのWikiにデータベースに対するインターフェースの
ページがあります。
DatabaseInterfaces / Database Interfaces for Relational Database Systems
こちらからたどれる各ページを見ると、データベースごとのDB API 2.0に対応したドライバーを一覧することできます。
たとえばMySQLやPostgreSQL。
SQLiteの場合は、Python自体に組み込まれていたりします。
sqlite3 --- SQLite データベースに対する DB-API 2.0 インターフェース — Python 3.10.13 ドキュメント
MySQLやPostgreSQLといったデータベースのDB API 2.0準拠のドライバーの数を見てみると…多いですね…。同じデータベースに対して、
たくさんのドライバーがあります…。
どうしてこんなにたくさんあるのか?どういう特性さがあるのか?は個々に見ていくことになるわけですが、このPythonのWikiが
そのとっかかりとしては参考になるのではと思います。
このページを知っているかどうかで見える全体像が変わる気がしたので、まずはこのテーマだけで1回押さえておこうと思いました。