Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PyCon JP 2014 LT

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

PyCon JP 2014 LT

Writing Python Database Adapter

Avatar for Hajime Nakagami

Hajime Nakagami

September 13, 2014
Tweet

Other Decks in Technology

Transcript

  1. Profile(おまえ誰よ) • Hajime Nakagami(中神 肇) • Python programmer at least recent

    5 years. • Work at BeProud inc. http://jobs.beproud.jp/ • GitHub: https://github.com/nakagami • Family: a wife, a son, a daughter, 3 dogs, 2 cats • Hobby: Writting Python Database Adapter
  2. What's Python Database Adapter • Generally called “Database Driver” •

    PEP-249 Python Database API Specification v2.0 http://legacy.python.org/dev/peps/pep-0249/ • Python から RDBMS に共通のインターフェース でアクセスできるように仕様を定義したもの • 緩い仕様(仕様というより指針?) • 1つの RDBMS に多くの実装があるのが普通 • 結局どれを使えば良いかわからない問題 • 書くハードルは低い
  3. pyfirebirdsql • Since 2010-09-26 • Pure Python • Firebird RDBMS

    http://www.firebirdsql.org/ • https://github.com/nakagami/pyfirebirdsql • https://pypi.python.org/pypi/firebirdsql • Firebird の DA の中ではメジャー(数が少ない) • Firebird は Delphi / .Net Frameworkでの開発が多 いので、 Python がマイナー(という印象) • そもそも Firebird という RDBMS がマイナー
  4. CyMySQL • Since 2013-01-01 • Forked from PyMySQL • Author:

    Yutaka Matsubara • Pure Python or accelerated with Cython • https://pypi.python.org/pypi/cymysql • https://github.com/nakagami/CyMySQL • PyMySQL のメンテンンスが滞っている時期に fork し魔改造。その後 PyMySQL はメンテナー が替わってメンテナンスが活発になってきてい る(CyMySQL いらない子やったんや!)
  5. minipg • Since 2014-08-17 • Pure Python • Mini PostgreSQL

    driver (only 720 lines) • https://github.com/nakagami/minipg • https://pypi.python.org/pypi/minipg • It can install as a package or as a module • Psycopg2 に比べてできないことたくさんあり • 不具合報告、 Pull request お待ちしております • ほとんどの場合に十分な機能
  6. minipg(2) • Unix ドメインソケットで接続できない • クライアント認証に trust と md5 しか使えない

    • スレッド間でのコネクション共有できない • 配列型が python の配列として取得できない • Prepared statement できない • Select For Update できない • その他高度なオプション使えない ・・・でもいいんです
  7. (参考)Other Database Adapters MySQL • https://pypi.python.org/pypi/MySQL-python (python 2.x) • https://pypi.python.org/pypi/PyMySQL

    (pure python) • https://pypi.python.org/pypi/mysql-connector-python • https://pypi.python.org/pypi/mysqlclient PostgreSQL • http://pypi.python.org/pypi/psycopg2 • https://pypi.python.org/pypi/pg8000 (pure python) Firebird • http://pypi.python.org/pypi/fdb