MySQL em Python
Instalação e teste
MySQL é um dos bancos de dados mais utilizados na atualidade. E nos podemos utilizar esse banco de dados nas nossas aplicações em python.Database MySQL
Para poder utilizar o banco de dados MySQL nas nossas aplicações, primeiro precisamos ter o MySQL instalado no nosso computador.Caso você não tenha o MySQL instalado você pode baixa-lo gratuitamente aqui.
Se você utiliza uma distribuição Linux tente instalar o pacote mysql-server pelo gerenciador de pacotes da sua distribuição.
Uma alternativa ao MySQL é o MariaDB. O MariaDB é um fork do MySQL e é mais fácil de instalar. Todos os exemplos vão funcionar perfeitamente no MariaDB.
Instalando o driver do MySQL
Para ter acesso ao nosso banco de dados precisamos instalar o drive do MySQL.Para instalar esse drive vamos utilizar o pip.
Copie e cole o texto abaixo no terminal (Linux ou Mac) ou promtp de comando (Windows).
python -m pip install mysql-connector
Com isso feito estamos prontos para usar o banco de dados MySQL.
Testando a conexão com o banco de dados
Para testar a conexão com o banco de dados é só importar o módulo mysql.connector. Se for apresentado algum erro a instalação do banco de dados ou do drive não foi bem sucedida. E se não for apresentado nada à instalação foi bem sucedida.
Exemplo
import mysql.connector
Criando uma conexão com o banco de dados MySQL
Para criar uma conexão com o banco de dados utilizamos o método connect. O método connect precisa receber os argumentos host, user e passwd. O primeiro argumento é o endereço da maquina (Se for uma maquina remota um ip deve ser fornecido, não é o nosso caso por isso usamos localhost). O segundo argumento é o usuário (vamos utilizar o usuário root. Esse já é criado por padrão). E por último o passwd. Nos exemplos desse tutorial não vamos utilizar senha, mas se você definiu uma senha deve utiliza-la.
Exemplo
Você deve receber uma resposta parecido com essa:
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd=''
)
print(meubd)
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd=''
)
print(meubd)
<mysql.connector.connection.MySQLConnection object at 0x02ED60B8>
Criando um banco de dados
Para criar um banco de dados chamamos o método execute com a seguinte string: CREATE DATABASE nome-do-meu-banco-de-dados.
Exemplo
O método cursor instancia objetos que podem executar operações como instruções SQL.
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd=''
)
meucursor = meubd.cursor()
meucursor.execute('CREATE DATABASE meuBD')
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd=''
)
meucursor = meubd.cursor()
meucursor.execute('CREATE DATABASE meuBD')
Que é exatamente o que o método execute faz.
Se não for apresentado nenhum erro o banco de dados meuBD foi criado.
Verificando se um banco de dados existe
Para verificar se um banco de dados existe vamos utilizar a instrução SQL SHOW DATABASES.
Exemplo
Esse exemplo vai retornar uma lista com os bancos de dados do sistema.
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd=''
)
meucursor = meubd.cursor()
meucursor.execute('SHOW DATABASES')
for i in meucursor:
print(i)
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd=''
)
meucursor = meubd.cursor()
meucursor.execute('SHOW DATABASES')
for i in meucursor:
print(i)
Também podemos definir o banco de dados no momento da conexão.
Exemplo
Se houver algum erro é por que o banco de dados meuBD não existe.
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
Criando tabelas
Para criar uma tabela usamos a instrução SQL CREATE TABLE nomedatabela.
Exemplo
Se nenhum erro for apresentado a tabela minhaT foi criada.
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
meucursor.execute("CREATE TABLE minhaT (name VARCHAR(255), address VARCHAR(255))")
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
meucursor.execute("CREATE TABLE minhaT (name VARCHAR(255), address VARCHAR(255))")
Verificando se uma tabela existe
Você pode verificar se uma tabela existe no seu banco de dados usando a instrução sql SHOW TABLES. A instrução show tables vai monstra todas as tabelas do seu banco de dados.
Exemplo
Quando você criar uma tabela, você também deve criar uma coluna com uma chave exclusiva para cada registro.
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
meucursor.execute('SHOW TABLES')
for i in meucursor:
print(i)
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
meucursor.execute('SHOW TABLES')
for i in meucursor:
print(i)
Isso pode ser feito definindo uma chave primária.
Usamos a instrução "INT AUTO_INCREMENT PRIMARY KEY" que inserirá um número exclusivo para cada registro. Começando em um e aumentado em um para cada registro.
Exemplo
Se a tabela já existir utilizamos ALTER TABLE.
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
meucursor.execute('CREATE TABLE minhaT (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), address VARCHAR(255))')
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
meucursor.execute('CREATE TABLE minhaT (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), address VARCHAR(255))')
Exemplo
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
meucursor.execute('ALTER TABLE minhaT ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY')
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
meucursor.execute('ALTER TABLE minhaT ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY')
Inserindo dados na tabela
Para inserir dados numa tabela utilizamos a instrução sql INSERT INTO.
Exemplo
O método commit salva as alterações feitas no banco de dados.
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "INSERT INTO minhaT (name, address) VALUES (%s, %s)"
dados = ("João", "São Paulo - SP")
meucursor.execute(instrucaoSQL, dados)
meubd.commit()
print(meucursor.rowcount, 'Dados inseridos.')
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "INSERT INTO minhaT (name, address) VALUES (%s, %s)"
dados = ("João", "São Paulo - SP")
meucursor.execute(instrucaoSQL, dados)
meubd.commit()
print(meucursor.rowcount, 'Dados inseridos.')
Inserindo múltiplas linhas
Para inserir múltiplas linhas vamos utilizar o método executemany. O método executemany recebe dois argumentos: a instrução sql e os dados. Os dados devem estar numa lista de tuplas.
Exemplo
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "INSERT INTO minhaT (name, address) VALUES (%s, %s)"
dados = [
('Maria', 'Rio branco - AC'),
('Fabiana', 'Tíbau - RN'),
('Fábio', 'Rio de janeiro - RJ'),
('Michele', 'Fortaleza - CE')
]
meucursor.executemany(instrucaoSQL, dados)
meubd.commit()
print(meucursor.rowcount, 'Dados inseridos.')
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "INSERT INTO minhaT (name, address) VALUES (%s, %s)"
dados = [
('Maria', 'Rio branco - AC'),
('Fabiana', 'Tíbau - RN'),
('Fábio', 'Rio de janeiro - RJ'),
('Michele', 'Fortaleza - CE')
]
meucursor.executemany(instrucaoSQL, dados)
meubd.commit()
print(meucursor.rowcount, 'Dados inseridos.')
ID da última linha inserida
É fácil descobrir o id da última linha inserida na tabela com o atributo lastrowid.
Exemplo
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "INSERT INTO minhaT (name, address) VALUES (%s, %s)"
dados = ("Naruto", "Konoha")
meucursor.execute(instrucaoSQL, dados)
meubd.commit()
print("Uma linha foi inserida, ID:", meucursor.lastrowid)
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "INSERT INTO minhaT (name, address) VALUES (%s, %s)"
dados = ("Naruto", "Konoha")
meucursor.execute(instrucaoSQL, dados)
meubd.commit()
print("Uma linha foi inserida, ID:", meucursor.lastrowid)
Selecionando elementos da tabela
Para selecionar dados de uma tabela utilizamos a instrução sql SELECT.
Exemplo
Nesse exemplo estamos selecionando todos os elementos da tabela minhaT.
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
meucursor.execute("SELECT * FROM minhaT")
resultado = meucursor.fetchall()
for i in resultado:
print(i)
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
meucursor.execute("SELECT * FROM minhaT")
resultado = meucursor.fetchall()
for i in resultado:
print(i)
O método fetchall busca todas as linhas da última instrução executada.
Selecionando colunas
Para selecionar as colunas da nossa tabela é só especificarmos os nomes das colunas.
Exemplo
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
meucursor.execute("SELECT name, address FROM minhaT")
resultado = meucursor.fetchall()
for i in resultado:
print(i)
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
meucursor.execute("SELECT name, address FROM minhaT")
resultado = meucursor.fetchall()
for i in resultado:
print(i)
Método fetchone
Se você só precisar da primeira linha da tabela use o método fetchone. O método fetchone retorna uma tupla com a primeira linha da tabela.
Exemplo
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
meucursor.execute("SELECT * FROM minhaT")
resultado = meucursor.fetchone()
print(resultado)
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
meucursor.execute("SELECT * FROM minhaT")
resultado = meucursor.fetchone()
print(resultado)
Instrução WHERE
Com a instrução where selecionamos com dados com um filtro melhor. Em vez de selecionar uma coluna ou uma linha da nossa tabela podemos selecionar um dado.
Exemplo
Com esse exemplo todos os dados da coluna address que o valor seja “Rio branco – AC” vão ser mostrados.
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "SELECT * FROM minhaT WHERE address ='Rio branco - AC'"
meucursor.execute(instrucaoSQL)
resultado = meucursor.fetchall()
for i in resultado:
print(i)
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "SELECT * FROM minhaT WHERE address ='Rio branco - AC'"
meucursor.execute(instrucaoSQL)
resultado = meucursor.fetchall()
for i in resultado:
print(i)
Caracteres coringa
Se você precisar procurar no banco de dados por um dado que você só conhece uma parte, os caracteres coringa podem ajudar. Com eles você só precisar saber uma parte do que você está procurando.
Exemplo
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "SELECT * FROM minhaT WHERE address LIKE '%RN%'"
meucursor.execute(instrucaoSQL)
resultado = meucursor.fetchall()
for i in resultado:
print(i)
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "SELECT * FROM minhaT WHERE address LIKE '%RN%'"
meucursor.execute(instrucaoSQL)
resultado = meucursor.fetchall()
for i in resultado:
print(i)
Ordenando por resultado
Podemos ordenar os nossos resultados de forma crescente ou decrescente usando a instrução SORT BY.
Exemplo
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "SELECT * FROM minhaT ORDER BY name"
meucursor.execute(instrucaoSQL)
resultado = meucursor.fetchall()
for i in resultado:
print(i)
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "SELECT * FROM minhaT ORDER BY name"
meucursor.execute(instrucaoSQL)
resultado = meucursor.fetchall()
for i in resultado:
print(i)
Ordem decrescente
Por padrão a instrução ORDER BY ordena os resultados de forma crescente. Para mudarmos esse comportamento usamos o DESC.
Exemplo
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "SELECT * FROM minhaT ORDER BY name DESC"
meucursor.execute(instrucaoSQL)
resultado = meucursor.fetchall()
for i in resultado:
print(i)
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "SELECT * FROM minhaT ORDER BY name DESC"
meucursor.execute(instrucaoSQL)
resultado = meucursor.fetchall()
for i in resultado:
print(i)
Apagando dados
Você pode apagar dados de uma tabela com a instrução DELETE FROM.
Exemplo
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "DELETE FROM minhaT WHERE address = 'Rio branco - AC'"
meucursor.execute(instrucaoSQL)
meubd.commit()
print(meucursor.rowcount, 'Dados apagados.')
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "DELETE FROM minhaT WHERE address = 'Rio branco - AC'"
meucursor.execute(instrucaoSQL)
meubd.commit()
print(meucursor.rowcount, 'Dados apagados.')
Apagando uma tabela
Para apagar uma tabela do nosso banco de dados usamos a instrução DROP TABLE.
Exemplo
Com esse exemplo se você tentar apagar uma tabela que não existe um erro vai ser lançado. Para evitar isso podemos usar o IF EXISTS.
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = 'DROP TABLE minhaT'
meucursor.execute(instrucaoSQL)
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = 'DROP TABLE minhaT'
meucursor.execute(instrucaoSQL)
Exemplo
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = 'DROP TABLE IF EXISTS minhaT'
meucursor.execute(instrucaoSQL)
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = 'DROP TABLE IF EXISTS minhaT'
meucursor.execute(instrucaoSQL)
Atualizando dados de uma tabela
Para atualizar dados de uma tabela utilizamos a instrução UPDATE.
Exemplo
O primeiro valor (Campinas) é o dado que será alterado.
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "UPDATE minhaT SET address = 'Campinas' WHERE address = 'Campinas - SP'"
meucursor.execute(instrucaoSQL)
meubd.commit()
print(meucursor.rowcount, 'Dado(s) atualizado(s).')
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
instrucaoSQL = "UPDATE minhaT SET address = 'Campinas' WHERE address = 'Campinas - SP'"
meucursor.execute(instrucaoSQL)
meubd.commit()
print(meucursor.rowcount, 'Dado(s) atualizado(s).')
Limitando os resultados
Com uma tabela pequena não é preciso limitar os resultados numa consulta. Mas em uma tabela com centenas ou milhões de resultados limitar os resultados passa a ser interessante.Podemos fazer isso com a instrução LIMIT.
Exemplo
Esse exemplo retorna cinco resultados começando da terceira linha.
import mysql.connector
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
meucursor.execute("SELECT * FROM minhaT LIMIT 5 OFFSET 2")
resultado = meucursor.fetchall()
for i in resultado:
print(i)
meubd = mysql.connector.connect(
host='localhost', # máquina local
user='root',
passwd='',
database='meuBD'
)
meucursor = meubd.cursor()
meucursor.execute("SELECT * FROM minhaT LIMIT 5 OFFSET 2")
resultado = meucursor.fetchall()
for i in resultado:
print(i)
0 comentários:
Postar um comentário