Como efetuar consultas SQL simples no MySQL com Python
Consultas SQL simples no MySQL com Python
Na lição passada mostrei como criar um script em Python que se conecta a um banco de dados MySQL, por meio do uso do módulo mysql-connector-python, e realizamos um teste simples de conexão com um banco de nome db_MeusLivros. O que faremos agora é realizar uma consulta SQL a uma das tabelas desse banco, retornando os dados armazenados. Para tal continuaremos a empregar o módulo mysql.connector.
Código
No código a seguir, logo após criar um objeto de conexão (con), criamos uma variável chamada consulta_sql, que irá armazenar a declaração SQL a ser executada no banco de dados (a consulta), e então criamos um objeto cursor para realizar a consulta desejada. Passamos a variável SQL para o cursor logo após.
Com o método fetchall() retornamos todas as linhas obtidas na consulta para uma variável (array) que batizamos como linhas, e então podemos iterar por essa variável para ler os dados de cada coluna presente no resultado da consulta, linha a linha.
A propriedade rowcount mostra o número total de linhas retornadas no resultset.
Finalmente, fechamos o cursor e a conexão ao banco de dados. Veja o código a seguir:
import mysql.connector from mysql.connector import Error try: con = mysql.connector.connect(host='localhost',database='db_MeusLivros',user='root',password='abc123**') consulta_sql = "select * from tbl_autores" cursor = con.cursor() cursor.execute(consulta_sql) linhas = cursor.fetchall() print("Número total de registros retornados: ", cursor.rowcount) print("\nMostrando os autores cadastrados") for linha in linhas: print("Id:", linha[0]) print("Nome:", linha[1]) print("Sobrenome:", linha[2], "\n") except Error as e: print("Erro ao acessar tabela MySQL", e) finally: if (con.is_connected()): con.close() cursor.close() print("Conexão ao MySQL encerrada")
Resultado:
É isso aí! Consulta SQL realizada com sucesso em uma tabela no MySQL, a partir de um script escrito em Python.
No próximo artigo prosseguimos com a execução declarações SQL no banco por meio desta conexão, incluindo a inserção de linhas, consultas mais elaboradas (incluindo INNER JOIN) e outras operações de CRUD comuns.
Até!
Explanação muito clara!
Sugestão: consulta (select) de periodo (data inicial e data final) entre datas usando o Python / Mysql, sendo que as datas são oriundas de variáveis. Como ficaria a sql?
muito obrigado, comecei a mexer com sql a uns dias e tava apanhando para aprender isso
Olá Fábio, eu usei uma função em python bem comum para ler os registros de uma tabela, o problema é que ao gerar o pdf ele exibe (imprime) apenas o conteudo de uma pagina, enquanto que o cur.rowcount diz que há 17424 registros, mas no pdf aparecem apenas 62 se não estou enganado. usei o “for i in range(0, len(dados_lidos)):” para ler até o tamanho do banco, inclusive ao printar dados_lidos ele exibe por completo no terminal. Já pesquisei bastante e nada, não consegui sair disso.
Se puder dar uma luz, grato.
Olá Eldio!
Pode postar o código completo do script aqui, por favor, para eu dar uma olhada?