[firebase-br] Alguem ai usa Python com FB?

Gladiston Santana gladiston em vidy.com.br
Seg Dez 9 15:18:00 -03 2019


Aproveitando o momento, sabe porque não tá funcionando essa linha destacada:

def fdb_reset_all_password(con_dsn, con_user='SYSDBA',
con_password='masterkey', set_password='masterkey',
result_value=False):
    print('Modificando a senha de todos os usuarios em', con_dsn,
'para', set_password)
    try:
        con = fdb.connect(dsn=con_dsn, user=con_user, password=con_password)
        print('Conexoes estabelecidas com este servidor:')
        print(con.db_info(fdb.isc_info_user_names))
        cur = con.cursor()
        select =\
            'SELECT a.SEC$USER_NAME FROM SEC$USERS a\
             WHERE a.SEC$USER_NAME NOT IN(\
               SELECT SEC$USER_NAME FROM SEC$USERS\
               WHERE SEC$USER_NAME LIKE \'SYSDBA\') \
            AND a.SEC$USER_NAME NOT IN (\
               SELECT SEC$USER_NAME FROM SEC$USERS\
               WHERE SEC$USER_NAME LIKE \'RDB$%\')\
            AND a.SEC$USER_NAME NOT IN (\
              SELECT SEC$USER_NAME FROM SEC$USERS\
              WHERE SEC$USER_NAME LIKE \'SYS_%\')\
            AND a.SEC$USER_NAME NOT IN (\
              SELECT SEC$USER_NAME FROM SEC$USERS\
              WHERE SEC$USER_NAME LIKE \'REPL_%\')'
        print(select)
        cur.execute(select)
        for (db_username) in cur:
            sql_change_password = 'ALTER USER %s PASSWORD %s;'
            con.execute_immediate(sql_change_password, (db_username,
set_password)) <---- NECAS DE CATIPIRIBA
            print('Usuario:', db_username, 'teve sua senha resetada
para', set_password)
        con.commit()
        print('Sucesso ao resetar senhas em', con_dsn, 'para', set_password)
        result_value = True

    except fdb.Error as er:
        print(str(er))
        result_value = False
    except fdb.ProgrammingError as er:
        print(str(er))
        result_value = False

    except fdb.DatabaseError as dberr:
       print(str(dberr))
       result_value = False
    except:
        print('Falha ao aplicar senha em', con_dsn, 'para', set_password)
    return result_value

A intenção do trecho no codigo é estabelecer uma senha para todos os
usuarios, enquanto o select funciona, o 'alter user' não.


Em seg., 9 de dez. de 2019 às 13:59, Murilo Furquim <murilofurquim em gmail.com>
escreveu:

> Opa, que bom que funcionou. Até colei aqui outro exemplo que também
> funcionou, só com um except.
>
> https://pastebin.com/JPYBgW4x
>
> Em seg., 9 de dez. de 2019 às 13:52, Gladiston Santana
> <gladiston em vidy.com.br> escreveu:
> >
> > Muito obrigado, identifiquei o problema com o except
> > na hora que voce colou achei que era para colar um ou outro, pensei no
> > "delphi" nesta hora. Seu codigo não falha se coloco extamente os dois
> > except´s.
> >
> >
> > Em seg., 9 de dez. de 2019 às 13:44, Gladiston Santana <
> > gladiston em vidy.com.br> escreveu:
> >
> > > Descobri o que houve.
> > >
> > > O problema está em o python não achar a 'fbclient.dll', eu usei o
> instalar
> > > do firebird 64 e pedi para instalar apenas o cliente, mas parece que
> ele
> > > não colocou o fbclient em c:\windows\system, talvez por considerar que
> > > havia uma versão 32bits em c:\windows\syswol64.
> > >
> > > Agora meu script conecta.
> > > Ainda tô tentando entender porque o except abaixo não funcionou:
> > >     except fdb.ProgrammingError as er:
> > >         print(str(er))
> > >         return False
> > >
> > >     except fdb.DatabaseError as dberr:
> > >        print(str(dberr))
> > >        return False
> > > Pois seria muito util diagnosticar erros do banco de  dados dessa
> forma.
> > >
> > > Agora o próximo passo será encontrar a função para restaurar base de
> dados
> > > nativamente.
> > >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>


-- 
A Vidy possui um Sistema de Gestão da Qualidade estruturado e com
Certificação ISO 9001 há mais de 10 anos, mantendo seu foco na Qualidade e
na Melhoria Continua.

Em março de2018 migramos com sucesso para a nova versão da ISO 9001.

Somos a única Empresa Brasileira de Engenharia de Laboratórios com
certificação com o Escopo Completo; desde Projetos, Engenharia, Construção,
Fabricação e Instalação de Laboratórios.



Mais detalhes sobre a lista de discussão lista