Exemplo básico de CRUD com MYSQL e linguagem Python

Exemplo básico de CRUD com MYSQL e linguagem Python

Neste tutorial, você verá:

✔️ Criar uma api do zero usando o python com MySQL;
✔️ Testar o CRUD usando o Postman

📌 Simplifique seu processo de deploy com o nosso painel ICP!

Nesse tutorial vamos aprenda a desenvolver, configurar sua API em Python usando o banco de dados MySQL. Tudo explicado de forma simples e prática!

📌 Passo 1: Crie um arquivo requirements.txt na raiz do seu projeto com o seguinte conteúdo

Flask==2.1.3
Flask-SQLAlchemy==2.5.1
Flask-RESTful==0.3.9
python-dotenv==1.0.0
PyMySQL==1.0.2
Werkzeug==2.1.2
SQLAlchemy==1.4.46

📌 Passo 2: Crie um arquivo index.py na raiz do seu projeto com o seguinte conteúdo:

import os
from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_restful import Api, Resource
from dotenv import load_dotenv

# Carregar variáveis de ambiente do arquivo .env
load_dotenv()

app = Flask(__name__)

# Configurar a URI de conexão usando variáveis de ambiente
app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{os.getenv('DB_USER')}:{os.getenv('DB_PASSWORD')}@{os.getenv('DB_HOST')}:{os.getenv('DB_PORT')}/{os.getenv('DB_NAME')}"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)
api = Api(app)

# Definir o modelo de dados
class Usuario(db.Model):
    __tablename__ = 'usuarios'
    id = db.Column(db.Integer, primary_key=True)
    nome = db.Column(db.String(255), nullable=False)
    email = db.Column(db.String(255), nullable=False)

    def to_dict(self):
        return {'id': self.id, 'nome': self.nome, 'email': self.email}

# Endpoint para listar todos os usuários
class UsuarioList(Resource):
    def get(self):
        usuarios = Usuario.query.all()
        return [usuario.to_dict() for usuario in usuarios], 200

    def post(self):
        data = request.get_json()
        novo_usuario = Usuario(nome=data['nome'], email=data['email'])
        db.session.add(novo_usuario)
        db.session.commit()
        return {'message': 'Usuário adicionado com sucesso'}, 201

# Endpoint para manipular um usuário específico
class UsuarioDetail(Resource):
    def get(self, id):
        usuario = Usuario.query.get_or_404(id)
        return usuario.to_dict(), 200

    def put(self, id):
        data = request.get_json()
        usuario = Usuario.query.get_or_404(id)
        usuario.nome = data['nome']
        usuario.email = data['email']
        db.session.commit()
        return usuario.to_dict(), 200

    def delete(self, id):
        usuario = Usuario.query.get_or_404(id)
        db.session.delete(usuario)
        db.session.commit()
        return {'message': 'Usuário deletado com sucesso'}, 200

# Adicionar as rotas aos recursos
api.add_resource(UsuarioList, '/usuarios')
api.add_resource(UsuarioDetail, '/usuarios/<int:id>')

if __name__ == '__main__':
    db.create_all()
    app.run(debug=True, host="0.0.0.0", port=3140)

📌 Passo 3: Crie uma tabela usuários em seu banco de dados:

CREATE TABLE usuarios (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    nome VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL
);

📌 Passo 4: Iniciando o seu projeto Python

python index.py


📌 Passo 5: Testando o CRUD com Postman

Com o aplicativo registrado e iniciado corretamente com sucesso, temos o acesso testado e 100% funcional, no qual demonstramos em imagens abaixo:

Adicionando um usuário:

Visualizar um usuário:

Excluir um usuário:

Até a próxima pessoal! =)