Na linha 10 executamos um SQL de consulta de seleção e em seguida preparamos outro comando SQL para ser executado, que por sua vez imprime a consulta, retornando todos os registros. Ao final, na linha 14 fecha a conexão.
Na Listagem 5 criamos a classe denominada Conexao, cujo fundamento é modularizar o código criado anteriormente na Listagem 4. Para que sua funcionalidade de conexão fique mais modular precisamos melhorar o desempenho da aplicação e torna-la mais rápida com relação ao tempo de resposta. Note que já foi criada a tabela ‘cidade’ anteriormente.
Começamos criando a classe Conexao na linha 2. Já na linha 4 é criada o método de iniciação __init__ com o parâmetro do banco. Em seguida é criada o objeto que recebe o método para abrir o banco, além do método ‘manipular’, que efetua as transações para executar o SQL. Na linha 12 é definido o método de consulta e o objeto ‘rs’ é criado na linha 14. A partir da linha 15 esse ‘rs’ prepara o SQL para ser executado e, na linha 18, esse mesmo objeto retorna a consulta.
Na linha 19 é criado o método proximaPK, que verifica se a chave primária existe e, em seguida, na linha 20, temos o SQL que faz a consulta do maior índice, criado através do registro inserido. Na linha 21 temos o objeto ‘rs’ recebendo o valor da consulta por SQL. Já na linha 22 temos o objeto pk recebendo o primeiro registro da tabela e em seguida o seu retorn do objeto ‘pk’. As linhas 24 e 25 criam o método fechar e encerram a conexão.
Com o objetivo de integrar o código anterior da Listagem 5 vamos implementar a seguir o código da Listagem 6, podendo ser implementado em um outro módulo, para que assuma todos os comportamentos e parâmetros de conexão, inserção, consulta e transação.
Esse código efetua a passagem de parâmetros para conexão, realiza inserção na tabela e retorna seus registros, começando pela linha 2, que faz a importação da classe Conexao. Em seguida é criado o objeto ‘con' para conexão com suas diretrizes e nome do banco. Na linha 4 é criado o comando para inserir valores na tabela cidade e na linha 5 verifica-se se foi inserido com sucesso. A linha 7 imprime o maior registro inserido. O objeto rs recebe a consulta da tabela cidade pelo código da linha 8 e na linha 10 imprime-se os registros da tabela. A conexão é fechada na linha 11.
Veja na Figura 7 o resultado da inserção e busca dos registros da tabela “teste” utilizando modularização.
Figura 7. Console exibindo uma mensagem de inserção com sucesso e a retorno de todos os registros armazenados.
Vimos nesse artigo como é fácil instalar e configurar o Psycopg para implementar a API Python DB 2.0, que é usada para conectar a aplicação com o banco PostgreSQL. Com esse adaptador conseguimos que diversas extensões permitam acesso a muitos dos recursos oferecidos por esse banco, como o thread-safe para usar conexões diferentes ou compartilhar a mesma configuração.
Já o py- postgresql nos fornece um conjunto de módulos em Python para nos ajudar a conversar com o banco por meio de interfaces. Para usar este é interessante ter o Psycopg instalado, pois proporciona uma maior utilidade.