Conectando ao banco de dados Firebird utilizando Python
Firebird é um banco muito utilizado em aplicações escritas em Delphi, porém pouco popular com linguagens de script como Python e PHP. Recentemente precisei importar dados de um banco Firebird para PostgreSQL, utilizando Python, e não achei informações suficiente de como fazer isso. Achei uma lib em Python com pouca documentação mas consegui entender melhor após analisar o código fonte por algum tempo e vou simplificar sua instalação e uso.
KinterbasDB é uma biblioteca open source para Python que possibilita acessar banco de dados Firebird e algumas versões do Interbase. O download pode ser feito na página do projeto.
Após o download, descompacte o pacote kinterbasdb-3.2.src.tar.gz
.
Abra um terminal, entre no diretório onde o KinterbasDB foi descompactado e execute o comando python setup.py build
. O script de instalação, setup.py
, vai detectar as informações necessárias pelo compilador C.
Se não ocorreu nenhum erro, execute o comando python setup.py install
para instalar no diretório padrão de módulos do Python (varia de acordo com a distro).
wget http://downloads.sourceforge.net/project/kinterbasdb/kinterbasdb/kinterbasdb-3.2/kinterbasdb-3.2.src.tar.gz?use_mirror=ufpr
tar zxvf kinterbasdb-3.2.src.tar.gz
python setup.py build
sudo python setup.py install
Para testar se foi instalado corretamente, execute o comando:
python -c "import kinterbasdb as k; print k.__version__"
E o resultado deve ser:
(3, 2, 0, 'final', 0)
É possível que apareça uma mensagem de erro em distros baseadas no Ubuntu:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
kinterbasdb.OperationalError: (-901, 'begin transaction: \n invalid parameter in transaction parameter block')
Para corrigir esse problema é preciso usar uma outra versão do arquivo init.py.
Faça o download aqui e substitua o arquivo existente no diretório kinterbasdb
:
wget https://firebird.svn.sourceforge.net/svnroot/firebird/qa/trunk/kinterbasdb/__init__.py
sudo mv __init__.py /usr/lib/python2.5/site-packages/kinterbasdb/
Exemplo para Firebird-2.1 em servidor Windows:
import kinterbasdb
conn = kinterbasdb.connect(
host='192.168.0.2',
database='C:\\Dados\\banco.fdb',
user='sysdba',
password='masterkey'
)
cur = conn.cursor()
cur.execute('SELECT id, nome, telefone FROM tabela')
for (id, nome, telefone) in cur:
print 'ID: %s, Nome: %s, Fone: %s' % (id, nome, telefone)