Acessando BD Firebird através do KinterbasDB no Python

firebird-icon

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, automaticamente 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).

root@localhost: ~# wget http://downloads.sourceforge.net/project/kinterbasdb/kinterbasdb/kinterbasdb-3.2/kinterbasdb-3.2.src.tar.gz?use_mirror=ufpr
root@localhost: ~# tar zxvf kinterbasdb-3.2.src.tar.gz
root@localhost: ~# python setup.py build
Succeeded:
  /usr/bin/python setup.py build
root@localhost: ~# python setup.py install

Para testar se foi instalado corretamente:

root@localhost: ~# python -c "import kinterbasdb as k; print k.__version__"
(3, 2, 0, 'final', 0)
root@localhost: ~#

É 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 em https://firebird.svn.sourceforge.net/svnroot/firebird/qa/trunk/kinterbasdb/__init__.py e substitua o arquivo existente no diretório kinterbasdb.

root@localhost: ~# wget https://firebird.svn.sourceforge.net/svnroot/firebird/qa/trunk/kinterbasdb/__init__.py
root@localhost: ~# 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\\meubanco.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)
You can leave a response, or trackback from your own site.

Leave a Reply

Powered by WordPress | Shop the Best Verizon Wireless Deals. | Thanks to Best CD Rates, Credit Cards and Credit card