En aquest tema, aprendrem a realitzar operacions CRUD (Create, Read, Update, Delete) utilitzant Flask-SQLAlchemy. Aquestes operacions són fonamentals per a la gestió de dades en qualsevol aplicació web.

Objectius

  • Entendre què són les operacions CRUD.
  • Aprendre a crear, llegir, actualitzar i eliminar registres en una base de dades utilitzant Flask-SQLAlchemy.
  • Implementar exemples pràctics per reforçar els conceptes apresos.

Què són les Operacions CRUD?

CRUD és un acrònim que representa les quatre operacions bàsiques que es poden realitzar en una base de dades:

  • Create (Crear): Afegir nous registres a la base de dades.
  • Read (Llegir): Recuperar registres de la base de dades.
  • Update (Actualitzar): Modificar registres existents a la base de dades.
  • Delete (Eliminar): Esborrar registres de la base de dades.

Configuració Inicial

Abans de començar, assegura't que tens Flask-SQLAlchemy instal·lat i configurat en la teva aplicació Flask. Si no ho has fet, pots seguir les instruccions del tema anterior sobre Introducció a Flask-SQLAlchemy.

Definició del Model

Primer, definirem un model senzill per a una taula User que utilitzarem per a les nostres operacions CRUD.

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return f'<User {self.username}>'

# Crear la base de dades i les taules
with app.app_context():
    db.create_all()

Crear (Create)

Per crear un nou registre a la base de dades, primer creem una instància del model i després la guardem a la base de dades.

@app.route('/create_user')
def create_user():
    new_user = User(username='john_doe', email='[email protected]')
    db.session.add(new_user)
    db.session.commit()
    return 'User created successfully!'

Llegir (Read)

Per llegir registres de la base de dades, utilitzem les funcions de consulta proporcionades per SQLAlchemy.

Llegir tots els usuaris

@app.route('/read_users')
def read_users():
    users = User.query.all()
    return str(users)

Llegir un usuari per ID

@app.route('/read_user/<int:id>')
def read_user(id):
    user = User.query.get(id)
    return str(user)

Actualitzar (Update)

Per actualitzar un registre existent, primer el recuperem de la base de dades, fem els canvis necessaris i després guardem els canvis.

@app.route('/update_user/<int:id>')
def update_user(id):
    user = User.query.get(id)
    if user:
        user.username = 'jane_doe'
        db.session.commit()
        return 'User updated successfully!'
    return 'User not found!'

Eliminar (Delete)

Per eliminar un registre, primer el recuperem de la base de dades i després el suprimim.

@app.route('/delete_user/<int:id>')
def delete_user(id):
    user = User.query.get(id)
    if user:
        db.session.delete(user)
        db.session.commit()
        return 'User deleted successfully!'
    return 'User not found!'

Exercicis Pràctics

Exercici 1: Crear un Nou Usuari

Crea una ruta /create_user/<username>/<email> que permeti crear un nou usuari amb el nom d'usuari i el correu electrònic proporcionats a la URL.

Exercici 2: Llegir Usuaris per Correu Electrònic

Crea una ruta /read_user_by_email/<email> que permeti llegir un usuari de la base de dades utilitzant el seu correu electrònic.

Exercici 3: Actualitzar el Correu Electrònic d'un Usuari

Crea una ruta /update_user_email/<int:id>/<new_email> que permeti actualitzar el correu electrònic d'un usuari amb l'ID proporcionat.

Exercici 4: Eliminar un Usuari per Nom d'Usuari

Crea una ruta /delete_user_by_username/<username> que permeti eliminar un usuari de la base de dades utilitzant el seu nom d'usuari.

Solucions als Exercicis

Solució 1: Crear un Nou Usuari

@app.route('/create_user/<username>/<email>')
def create_user(username, email):
    new_user = User(username=username, email=email)
    db.session.add(new_user)
    db.session.commit()
    return 'User created successfully!'

Solució 2: Llegir Usuaris per Correu Electrònic

@app.route('/read_user_by_email/<email>')
def read_user_by_email(email):
    user = User.query.filter_by(email=email).first()
    return str(user)

Solució 3: Actualitzar el Correu Electrònic d'un Usuari

@app.route('/update_user_email/<int:id>/<new_email>')
def update_user_email(id, new_email):
    user = User.query.get(id)
    if user:
        user.email = new_email
        db.session.commit()
        return 'User email updated successfully!'
    return 'User not found!'

Solució 4: Eliminar un Usuari per Nom d'Usuari

@app.route('/delete_user_by_username/<username>')
def delete_user_by_username(username):
    user = User.query.filter_by(username=username).first()
    if user:
        db.session.delete(user)
        db.session.commit()
        return 'User deleted successfully!'
    return 'User not found!'

Conclusió

En aquest tema, hem après a realitzar operacions CRUD utilitzant Flask-SQLAlchemy. Aquestes operacions són essencials per a la gestió de dades en qualsevol aplicació web. Hem vist com crear, llegir, actualitzar i eliminar registres en una base de dades, i hem practicat aquests conceptes amb exemples pràctics.

En el següent tema, explorarem com realitzar migracions de bases de dades amb Flask-Migrate per gestionar els canvis en l'esquema de la base de dades de manera eficient.

Curs de Desenvolupament Web amb Flask

Mòdul 1: Introducció a Flask

Mòdul 2: Conceptes Bàsics de Flask

Mòdul 3: Formularis i Entrada d'Usuari

Mòdul 4: Integració de Bases de Dades

Mòdul 5: Autenticació d'Usuaris

Mòdul 6: Conceptes Avançats de Flask

Mòdul 7: APIs RESTful amb Flask

Mòdul 8: Desplegament i Producció

Mòdul 9: Proves i Millors Pràctiques

Mòdul 10: Extensions i Ecosistema de Flask

© Copyright 2024. Tots els drets reservats