Pular para o conteúdo

Conectando ao banco de dados Firebird utilizando Python

Postado em 2 minutos de leitura

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)