juanengml / trilha-python

1 stars 0 forks source link

Exercício 5 - Dia 6 #30

Open 0thferr opened 4 days ago

0thferr commented 4 days ago

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

image image image image image

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 -

juanengml commented 2 days ago

vou subir um docker mysql para vc testar isso

juanengml commented 2 days ago

 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()
0thferr commented 2 days ago

Beleza vou testar!