Open 0thferr opened 4 days ago
vou subir um docker mysql para vc testar isso
pip install pymysql
pip install cryptography
import pymysql
# Configurações do banco de dados
db_host = "172.31.85.144"
db_user = "root"
db_password = "tijolo22"
db_name = "trilha_python_db"
# Conectando ao banco de dados
connection = pymysql.connect(
host=db_host,
user=db_user,
password=db_password,
database=db_name
)
# Função para criar a tabela (CREATE TABLE)
def create_table():
with connection.cursor() as cursor:
sql = """
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
age INT
)
"""
cursor.execute(sql)
connection.commit()
# Função para criar um registro (CREATE)
def create_record(name, age):
with connection.cursor() as cursor:
sql = "INSERT INTO users (name, age) VALUES (%s, %s)"
cursor.execute(sql, (name, age))
connection.commit()
# Função para ler registros (READ)
def read_records():
with connection.cursor() as cursor:
sql = "SELECT id, name, age FROM users"
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
print(row)
# Função para atualizar um registro (UPDATE)
def update_record(user_id, new_name):
with connection.cursor() as cursor:
sql = "UPDATE users SET name=%s WHERE id=%s"
cursor.execute(sql, (new_name, user_id))
connection.commit()
# Função para deletar um registro (DELETE)
def delete_record(user_id):
with connection.cursor() as cursor:
sql = "DELETE FROM users WHERE id=%s"
cursor.execute(sql, (user_id,))
connection.commit()
# Criar a tabela se não existir
create_table()
# Testando as funções CRUD
create_record("Alice", 25)
create_record("Bob", 30)
print("Registros após inserção:")
read_records()
update_record(1, "Alicia")
print("Registros após atualização:")
read_records()
delete_record(2)
print("Registros após deleção:")
read_records()
# Fechando a conexão com o banco de dados
connection.close()
Beleza vou testar!
Crie uma aplicação Flask que faça uma requisição para uma API e salve os dados em um banco de dados MySQL
Código + Resultado
Explicação do código - Primeiro o código importa as bibliotecas necessárias: Flask para criar o servidor web, jsonify para retornar respostas JSON, render_template para renderizar templates HTML, requests para fazer requisições HTTP e mysql.connector para conectar ao banco de dados MySQL. Em seguida, uma instância do aplicativo Flask é criada.
As configurações do banco de dados são definidas em um dicionário chamado db_config, que contém informações como o host, usuário, senha e nome do banco de dados. Uma função chamada get_db_connection é criada para retornar uma conexão com o banco de dados usando essas configurações.
Para garantir que a tabela todos exista no banco de dados, uma função chamada create_table é definida. Esta função se conecta ao banco de dados, cria a tabela se ela não existir, e depois fecha a conexão. A tabela todos possui três colunas: id, title e completed. Outra função, create_record, é responsável por inserir novos registros na tabela todos. Ela recebe três parâmetros (todo_id, title e completed), se conecta ao banco de dados, insere os valores na tabela e fecha a conexão.
A rota raiz (/) do aplicativo Flask é definida pela função home. Quando essa rota é acessada, o aplicativo faz uma requisição à API https://jsonplaceholder.typicode.com/todos/1, obtém os dados e renderiza o template home.html, passando os dados da API para o template. O template HTML exibe uma mensagem de boas-vindas e os dados obtidos da API.
Além disso, uma rota chamada /fetch-and-save é definida. Quando essa rota é acessada, o aplicativo faz uma requisição à mesma API, obtém os dados e os salva no banco de dados usando a função create_record. Em seguida, retorna uma mensagem de sucesso em formato JSON. Por fim, o código verifica se o script está sendo executado diretamente e, se estiver, cria a tabela todos (se ela não existir) e inicia o servidor Flask, permitindo conexões de qualquer endereço (0.0.0.0) e ativando o modo de depuração para facilitar o desenvolvimento.
Erros encontrados ao longo do caminho - MySQLdb.exceptions.OperationalError: (2002, "Can't connect to server on 'localhost' (10061)"). - "GET / HTTP/1.1" 200 -
Link -