Python + Firebird

949 views
Skip to first unread message

Sergio Oliveira

unread,
Jul 19, 2012, 2:00:42 PM7/19/12
to python...@googlegroups.com
Boa Tarde, estou começando a estudar python agora!
O meu foco principal é migrar um applicativo desktop feito para Windows utilizando Pascal (Delphi) .
Esse aplicativo usa como gerenciador de banco de dados o Firebird, então baixei o kinterdb para fazer a conexão com o Firebird só que não consigo nem rodar um aplicativo de exemplo.
Está me retornando a seguinte mensagem:
Traceback (most recent call last):
  File "C:\Python25\connfirebird.py", line 18, in <module>
    cur.execute(sql)
OperationalError: (-901, 'begin transaction: \n  invalid parameter in transaction parameter block\n  Table reservation lock type isc_tpb_shared requires table name before in TPB')

O código que eu peguei para testes é o seguinte:

# -*- coding: latin1 -*-
import kinterbasdb
#Para criar a base
# isql -u sysdba -p xXxXxXx
# create database '\temp\cds.fdb';
#
# conecta o Firebird
con = kinterbasdb.connect(dsn='localhost:c:/caixa_ecf/bd/bdpafecf.gdb',user='sysdba', password='masterkey')
# Cria um objeto cursor
cur = con.cursor()
sql = "create table cds("\
"nome varchar(20),"\
"artista varchar(20),"\
"ano integer,"\
"faixas integer,"\
"primary key(nome, artista, ano));"
# Cria uma tabela
cur.execute(sql)
# Grava as modificações
con.commit()
dados = [
    ('IV', 'Led Zeppelin', 1971, 8),
    ('Zenyattà Mondatta', 'The Police', 1980, 11),
    ('OK Computer', 'Radiohead', 1997, 12),
    ('In Absentia', 'Porcupine Tree', 2002, 12),
  ]
# Insere os registros e faz a interpolação
insert = "insert into cds"\
"(nome, artista, ano, faixas) values (?, ?, ?, ?)"
cur.executemany(insert, dados)
con.commit()
# Consulta os registros
cur.execute("select * from cds order by ano")
# Recupera os resuldados
for reg in cur.fetchall():
        # Formata e imprime
        print ' - '.join(str(i) for i in reg)



Alguém também está tendo problemas com esse gerenciador?

Weverton Gomes

unread,
Jul 19, 2012, 2:08:17 PM7/19/12
to python...@googlegroups.com
Qual versão do KInterbasDB vc está usando??

Weverton Gomes de Morais
Tecnólogo em Redes de Comunicação
Arquiteto de Software
Desenvolvedor C# e Delphi
Entusiasta Ruby/Rails
"Todos juntos somos fortes"



--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

José Ricardo Borba

unread,
Jul 19, 2012, 3:30:24 PM7/19/12
to python...@googlegroups.com
Sérgio,

Procure pelo SQLAlchemy. É muito bom e a internet está cheia de exemplos. E, ainda, você abstrai o SGBD, podendo mudar para a quele que desejar sem "sujar as mãos" novamente.

Abraço.

José Ricardo Borba
Porto Alegre - RS

Anderson Cardoso

unread,
Jul 19, 2012, 4:05:13 PM7/19/12
to python...@googlegroups.com
Gostaria só de reforçar a recomendação do José. SQLAlchemy é incrível. Vale muito a pena você dar uma olhada nele.
abs

Anderson
Anderson Pierre Cardoso
Computer Engineer - University of São Paulo

http://www.apierrecardoso.com

twitter: @apierre_cardoso


Sergio Oliveira

unread,
Jul 19, 2012, 10:52:51 PM7/19/12
to python...@googlegroups.com
Obrigado pelo contato!
Estou utilizando a versão 3.2 do   KInterbasDB.
Vou seguir a sugestão dos amigos e dar uma olhada no sqlAlchemy.

2012/7/19 Anderson Cardoso <apierre...@gmail.com>



--
Parece difícil mas não é fácil não!!

Sergio Oliveira

unread,
Jul 24, 2012, 12:02:36 AM7/24/12
to python...@googlegroups.com
Esqueci de comentar que estou utilizando windows, firebird 2.0 e python 2.7.
A mensagem que estou obtendo agora é a seguinte:

C:\Python27>python conectafire.py
Traceback (most recent call last):
  File "conectafire.py", line 1, in <module>
    import kinterbasdb
  File "C:\Python27\lib\site-packages\kinterbasdb\__init__.py", line 119, in <mo
dule>
    import _kinterbasdb as _k
ImportError: DLL load failed: The specified procedure could not be found.

Já coloquei as pastas do Python no Path mas näo adiantou !


2012/7/19 Sergio Oliveira <sergiow...@gmail.com>

Leonardo Santagada

unread,
Jul 24, 2012, 1:05:16 AM7/24/12
to python...@googlegroups.com
pelo jeito ele não achou o _kinterbasdb.dll tu sabe onde esta esse
arquivo? O python não precisa que o diretório esteja no path mas sim
no sys.path do interpretador e que a dll seja pra versão certa do
python.

2012/7/24 Sergio Oliveira <sergiow...@gmail.com>:
Leonardo Santagada

José Ricardo Borba

unread,
Jul 24, 2012, 7:54:36 AM7/24/12
to python...@googlegroups.com
Sérgio,

Me desculpe, mas tentar conectar a um sgbd com uma biblioteca que está há 6 anos sem novas atualizações e que possui uma versão compilada para Python 2.5 (o windows installer), diferente da versão que você está utilizando (2.7) é algo que pode levar rapidamente à insanidade.

Sugiro fortemente que você tente com uma biblioteca mais atualizada, como no email anterior. Claro, você é o dono do projeto e pode fazer do jeito que quiser, mas fica a minha dica. ;-)


Abraço.

José Ricardo Borba
Porto Alegre - RS

Sergio Oliveira

unread,
Jul 24, 2012, 9:42:58 PM7/24/12
to python...@googlegroups.com
É vc tem razão! Ë que eu queria testar o Python com a base que eu já tenho no Firebird.
Eu estou usando uma versão para o Python 2.7 (kinterbasdb-3.3.0.win32-py2.7.msi) mas pelo jeito não funciona de acordo ou eu não estou sabendo utilizá-la.
Vou dar mais uma pesquisada, se não der jeito vou partir pro mysql.
Vlw pela força !


2012/7/24 José Ricardo Borba <jrbor...@ig.com.br>
Reply all
Reply to author
Forward
0 new messages