pythonからFirebird(Interbase)DBを利用してみる

Pythonで利用可能なフリーのDB

MySQL
PostgreSQL
SQLite
FireBird

主にこんな感じかな?


FirebirdといえばMySQL6に組み込まれてるFalconってエンジンの作者が開発してたみたいで

Falconはちょっと使ったことあるので良いんじゃないかなって

で、今回はFirebird(Interbase)を使ってみる事にしてみた

環境はvmware上のUbuntu version 9.0.4 32bit版

pythonはversion 2.6.2


とりあえずインストール


shell> sudo apt-get install firebird2.1-super

shell> sudo dpkg-reconfigure firebird2.1-super

で、SYSDBAのパスワードと起動時に自動で起動するか聞かれるのでYESにしとく


次。管理ツールのFlamerobinのインストール


shell> sudo apt-get install flamerobin


今度はPythonにkinterbasdbをインストール


shell> sudo apt-get install python-kinterbasdb


ubuntu上にflamerobinを入れたけど実際はホストのwinマシンから管理するので

windows版のflamerobinを起動してデータベースを作成


CREATE DATABASE test;

testデータベースを選択し以下のDDLを発行


CREATE TABLE T1(
ID Integer NOT NULL,
CONSTRAINT PKEY PRIMARY KEY (ID)
);
GRANT DELETE, INSERT, REFERENCES, SELECT, UPDATE
ON T1 TO "SYSDBA" WITH GRANT OPTION;


で今度はPythonからの接続

設定とか何もしない状態ではDBは/tmp/以下に作成されているみたい

さっきwinのFlamerobinからCREATEしたtestを絶対パスで指定してあげる

firebird_example.py


#!/usr/bin/env python
# fileencoding=utf-8

import kinterbasdb

# DB connect
conn = kinterbasdb.connect(host='localhost', database="/tmp/test", user="SYSDBA", password="SYSDBA", charset="UTF-8")

# open cursor
cur = conn.cursor()
cur.execute("SELECT * FROM t1")
row = cur.fetchall()
print(row)

# DB close
conn.close()

で、実行。


shell> python firebird_example.py
Traceback (most recent call last):
File "firebird_example.py", line 11, in
cur.execute("SELECT * FROM t1")
kinterbasdb.OperationalError: (-901, 'begin transaction: \n invalid parameter in transaction parameter block')

エラー出ちゃったよ・・・・

調べたらバグみたい

https://bugs.launchpad.net/ubuntu/+source/python-kinterbasdb/+bug/369589

python-kinterbasdbのバージョンを3.2から3.3にしないといけないと

めんどいなぁ・・・

今日はここまでで