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-supershell> 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-8import 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にしないといけないと
めんどいなぁ・・・
今日はここまでで