Skip to content

Instantly share code, notes, and snippets.

@nakagami
Last active July 13, 2020 03:43
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nakagami/386cdeabeea5d6caedf55c8718287567 to your computer and use it in GitHub Desktop.
Save nakagami/386cdeabeea5d6caedf55c8718287567 to your computer and use it in GitHub Desktop.
Python database driver and Db2

python データーベースドライバーと Db2

2019-06-11 Shinjuku Mokumoku Programming #47 https://shinjuku-moku.connpass.com/event/129675/

今日書いていたのは Db2 のデーターベースドライバー

  • https://github.com/nakagami/pydrda
  • αリリース程度
  • 作りかけで3年くらい放置してたけど 10連休の間に動くようになってきたので、取り組んでいる

趣味のプログラミングとしてのデーターベースドライバー

  • 数年来、趣味で python のデータベースドライバーを書いている
  • データーベースドライバーは、平たくいうとTCP ストリームで SQL文(文字列)を送って表形式の結果を受け取る
  • テーマとしては自分には難しいが、思ったように結果が受け取れると、「やったー」というお気持ち
  • プロトコルドキュメントとして、動く疑似コードを書いておこうというモチベーションでやっている
  • ドライバーを書くにあたって、 OSS の RDBMS であれば、ソースコードが読める
  • ネットワークプロトコルのドキュメントは OSS もOSS でないものも、意外とある
  • PyCon JP 2016 で発表した https://gist.github.com/nakagami/bfbe98d62377f3f4554121ab161ae8c9

python のデーターベースドライバー

  • Python では、PEP-249 https://www.python.org/dev/peps/pep-0249/ という規約に従ってデーターベースドライバーを書くことが普通
  • PEP-249 は、JDBCドライバーのようが厳密性はなく、努力目標がかかれたドキュメントのようなもの
  • PEP-249 に書かれていない機能をバンバン実装しているドライバーもある

仕様がゆったりと定義されていて、探せばプロトコルドキュメントがある(かも)。 仕事でも Python を書いているので慣れている。

Db2 について

  • Db2 は IBM に古くからある RDBMS で、Linux/Windows だけじゃなくて、汎用機や AIX でも動いたりする(らしい)
  • python から使う場合には IBM 謹製のドライバーがある https://pypi.org/project/ibm-db/ (ただし PEP-249 とは異なる API)
  • 最近 dash DB とかいう名前で、インメモリ DWH の亜種もあったりする
  • DB-Engine Ranking というサイトでは着実に順位を落としている https://db-engines.com/en/ranking_trend/system/IBM+Db2
  • IBM の RDBMS は、 DRDA というプロトコル https://en.wikipedia.org/wiki/DRDA を喋る
  • 評価用としてDB2 Express-C というバージョンが(Linux/Windows)でダウンロードしてインストールできる
  • 最近 IBM クラウドの無料の範囲でDb2 が使えるようになった (Max 5接続/100MB)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment