Executando verificação de segurança...
1

Classe de conexão ao MySQL pelo Python

Olá amigos da comunidade TabNews.
Me chamo Frank Granjense, sou programador desde 1999 e como acredito na ideia dessa plantaforma, farei aqui a minha primeira contribuição: uma classe para acesso 'fácil' ao MySQL pelo Python.
Usem á vontade nas suas aplicações e agradeceria que citasse esta publicação e/ou o github onde publiquei exclusivamente para este meu pontapé inicial no TabNews!


  1. Certifique-se que tenha o Python instalado no local onde deseja 'rodar' esta aplicação, senão tiver baixe no servidor do python e instale. E claro, que também tenha o MySQL instalado;
  2. Faça o download dos arquivos 'index.py' e da pasta 'assets' no repositório do github o 'python-mysql' ;
  3. Abra o arquivo 'db.py' que está na pasta 'assets' e edite as variavéis:
    dbuser = "root" - Digite o usuário para acesso ao mySQL. O padrão para acesso local é 'root'.
    dbpass = "" - Digite a senha para acesso ao mySQL. O padrão para acesso local é '' (vazio).
    dbhost = "127.0.0.1" - Digite o url do servidor onde está o mySQL. O padrão para acesso local '127.0.0.1'.
    dbbase = "database" - Substitua o 'database' para o nome do banco que deseja acessar.
  4. Caso seu servidor necessite informar o caminho onde está o Python, edite a primeira linha do arquivo 'index.py' e substitua o caminho para acessar para o Python instalado no servidor que irá 'rodar' este sistema. Aqui no meu local (win10) ficou o caminho #!C:/Users/Administrator/AppData/Local/Programs/Python/Python310/python.exe, observe que tem o '#!' e depois o caminho completo. (uso o Xampp com o Python instalado. Caso queira fazer o mesmo, fiz uma publicação de como configurar o Python no Xampp aqui no TabNews!).

A SEGUIR: o arquivo 'index.py' e em seguida a explicação de como setá-lo

  1. Início do arquivo com o caminho da instalação do Python;
  2. Em seguida a importação da classe db;
  3. Setando o tipo do conteúdo (Content-Type);
  4. Criando uma variável chamada d com a classe Db com o nome da tabela que contém os dados:
#!C:/Users/Administrator/AppData/Local/Programs/Python/Python310/python.exe
from assets import db 

print("Content-Type: text/html\n")
d = db.Db("tabela")

A SEGUIR: Explicando as funções 'query' e 'query_order'

  1. A funcão query tem 4 parâmetros, sendo os 3 primeiros obrigatórios:
  • query( nome_campo , tipo_comparação , valor , tipo_busca )
    nome_campo - Nome de qualquer campo que tenha na tabela;
    tipo_comparação - O tipo de comparação padrão usada no MySQL que deseja trazer. Exemplos: '=' (igual) - '<>' (diferente) - '<' (menor) - '>' (maior) - '<=' (menor ou igual) - '>=' (maior ou igual) - 'LIKE' (que contenha o valor) - 'NOT LIKE' (que NÃO contenha o valor);
    valor - String, inteiro, fração..., ou seja, o valor que deseja buscar;
    tipo_busca - Não precisa setar caso a pesquisa tenha apenas 1 campo como filtro. SE TIVER mais de 1 tipo de informação que seja buscar, os valores possíveis são: 'AND' ou 'OR'. O padrão é sempre o 'AND', ou seja, informe se desejar, pois é facultativo. O valor 'OR' é obrigatório.
  1. A funcão query_order tem 2 parâmetros, sendo que o primeiro é obrigatório:
  • query_order( nome_campo , tipo_ordem )
    nome_campo - Nome de qualquer campo que tenha na tabela;
    tipo_ordem - Comando de como o nome_campo será ordenado. Os comandos possíveis são 'ASC' e 'DESC'. O comando 'ASC' é padrão/facultativo, informe caso queira. Caso deseje a ordem de forma decrescente, informe o comando 'DESC';

A SEGUIR: Alguns exemplos de SETAR a função 'query' com o que deseja buscar

  1. Exemplo com filtro único: Buscar todos os resultados da tabela que tenham o valor busca1 no campo campo1. Mostrar os resultados que vem em array através do print:
d.query("campo1", "=", "busca1")
print(d.list())

Observe que no exemplo acima não informei o 4° parâmetro ('AND' ou 'OR'). Pois é apenas 1 filtro.

  1. Exemplo com 2 filtros concatenados (AND): Buscar todos os resultados da tabela que tenham o valor busca1 no campo campo1 E que também tenha o valor busca2 no campo campo2. Mostrar os resultados que vem em array através do print:
d.query("campo1", "=", "busca1", "AND")
d.query("campo2", "=", "busca2", "AND")
print(d.list())

Observe que nesse 2° exemplo, informei o valor 'AND' no 4° parâmetro. Porém, não precisaria, pois o valor 'AND' É PADRÃO DA FUNÇÃO, mas se deseja que fique visual para futuras manuntenções, você pode informá-lo.

  1. Exemplo com 2 filtragens POSSÍVEIS (OR). 1° parte com 2 filtos concatenadas (AND) e a 2° parte com filtro único: Buscar todos os resultados da tabela que tenham o valor busca1 no campo campo1 E que também tenha o valor busca2 no campo campo2 OU que tenha o valor numérico inteiro menor que 3 no campo campo3. Mostrar os resultados que vem em array através do print:
d.query("campo1", "=", "busca1", "AND")
d.query("campo2", "=", "busca2", "AND")
d.query("campo3", "<", "3", "OR")
print(d.list())

Nesse 3° exemplo, eu quero que o função da busca traga como resultado a filtragem de 2 campos OU que traga os resultados que tenham o valor numerico de outro campo (que tenham valor menor que 3).

Acredito que estes exemplos explicaram bem como funciona a função 'query'.


A SEGUIR: Alguns exemplos de como ORDENAR os resultados da busca com a função 'query_order'

  1. Exemplo com filtro único e ORDENAÇÃO CRESCENTE: Buscar todos os resultados da tabela que tenham o valor busca1 no campo campo1. Trazer os resultados ORDENADOS por ordem CRESCENTE o campo campo1. Mostrar os resultados que vem em array através do print:
d.query("campo1", "=", "busca1")
d.query_order("campo1")
print(d.list())

Observe que no exemplo 1, não informei o 2° parâmetro ('ASC' ou 'DESC'). Pois o comando 'ASC' é padrão, portanto facultativo. Mas caso desejar que fique mais visual, poderia informar este 2° parâmetro assim: d.query_order("campo3", "ASC")

  1. Exemplo com 2 filtros concatenados (AND) e ORDENAÇÃO DECRESCENTE de outro campo: Buscar todos os resultados da tabela que tenham o valor busca1 no campo campo1 E que também tenha o valor busca2 no campo campo2. Trazer os resultados ORDENADOS por ordem DECRESCENTE o campo campo3. Mostrar os resultados que vem em array através do print:
d.query("campo1", "=", "busca1", "AND")
d.query("campo2", "=", "busca2", "AND")
d.query_order("campo3", "DESC")
print(d.list())

Observe que nesse 2° exemplo, informei um outro campo que não está setado na função query.

  1. Exemplo com 2 filtragens POSSÍVEIS (OR). 1° parte com 2 filtos concatenadas (AND) e a 2° parte com filtro único. Tudo isso ORDENADOS por 2 campos, um em ordem crescente e outro por ordem descrescente: Buscar todos os resultados da tabela que tenham o valor busca1 no campo campo1 E que também tenha o valor busca2 no campo campo2 OU que tenha o valor numérico inteiro menor que 3 no campo campo3. Mostrar os resultados que vem em array através do print:
d.query("campo1", "=", "busca1", "AND")
d.query("campo2", "=", "busca2", "AND")
d.query("campo3", "<", "3", "OR")
d.query_order("campo1", "ASC")
d.query_order("campo3", "DESC")
print(d.list())

Nesse 3° exemplo, foi setado duas ordenações. A primeira é a principal ordenação. A segunda é a ordenação secundária. Ou seja, primeiro ordena pelo 1° comando d.query_order("campo1", "ASC"), caso haja valores que estejam repetidos ordenará pelo 2° comando d.query_order("campo3", "DESC").

Acredito que estes exemplos explicaram bem como funciona a função 'query_order'.


A SEGUIR: Como ficará o arquivo 'index.py' com este último exemplo

#!C:/Users/Administrator/AppData/Local/Programs/Python/Python310/python.exe
from assets import db 

print("Content-Type: text/html\n")
d = db.Db("tabela")

d.query("campo1", "=", "busca1", "AND")
d.query("campo2", "=", "busca2", "AND")
d.query("campo3", "<", "3", "OR")
d.query_order("campo1", "ASC")
d.query_order("campo3", "DESC")
print(d.list())

UFA! Espero que eu tenha conseguido explicar como funciona.
Obrigado pela oportunidade!
Frank Granjense

Carregando publicação patrocinada...