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

Gladiston Santana gladiston em vidy.com.br
Seg Dez 9 16:54:13 -03 2019


Não.
Diferente do que observei no link do manual, só funcionou quando concatei
tudo.
Experimentei as formas ? (que deveriam ser usadas para queries
parametrizadas) e a outra forma %s
Eu atualizei o script, dá uma olhada:
https://pastebin.com/eSJvCCgk

A única coisa que achei osso foi tratar o resultado dos dados como array e
acessá-los pela sua posição ordinal, assim:

   1. try:
   2.         con = fdb.connect(dsn=con_dsn, user=con_user, password=
   con_password)
   3.         cur = con.cursor()
   4.         st = con.cursor()
   5.         select = \
   6.             'SELECT a.SEC$USER_NAME FROM SEC$USERS a\
   7.             WHERE a.SEC$USER_NAME NOT IN(\
   8.               SELECT SEC$USER_NAME FROM SEC$USERS\
   9.               WHERE SEC$USER_NAME LIKE \'SYSDBA\') \
   10.            AND a.SEC$USER_NAME NOT IN (\
   11.               SELECT SEC$USER_NAME FROM SEC$USERS\
   12.               WHERE SEC$USER_NAME LIKE \'RDB$%\')\
   13.            AND a.SEC$USER_NAME NOT IN (\
   14.              SELECT SEC$USER_NAME FROM SEC$USERS\
   15.              WHERE SEC$USER_NAME LIKE \'SYS_%\')\
   16.            AND a.SEC$USER_NAME NOT IN (\
   17.              SELECT SEC$USER_NAME FROM SEC$USERS\
   18.              WHERE SEC$USER_NAME LIKE \'REPL_%\')'
   19.         cur.execute(select)
   20.         *records = cur.fetchall()*
   21. *        for row in records:*
   22. *            db_username = row[0].strip()*
   23. *            sql_change_password = "ALTER USER " + db_username + "
   PASSWORD '" + set_password + "';"*
   24. *            st.execute(sql_change_password)*
   25. *            print('Usuario:', db_username, 'teve sua senha resetada
   para', set_password)*
   26.         con.commit()
   27.         print('Sucesso ao resetar senhas em', con_dsn, 'para',
    set_password)
   28.         result_value = True
   29.     except Exception as e:
   30.         print('\n')
   31.         print(str(e))
   32.         result_value = False
   33.
   34.     return result_value


De resto, o script ficou agora completo, com o restore e tudo mais.
Se quiser fazer uma sugestão para mudar, serei grato, assim eu aposento o
certificado de 'larva' para ganhar o certificado  'gafanhoto' em python.



Mais detalhes sobre a lista de discussão lista