Què és Flask-SQLAlchemy?
Flask-SQLAlchemy és una extensió per a Flask que simplifica la integració de SQLAlchemy, un ORM (Object-Relational Mapping) per a Python, amb les aplicacions web desenvolupades amb Flask. SQLAlchemy proporciona una interfície d'alt nivell per interactuar amb bases de dades relacionals, permetent als desenvolupadors treballar amb objectes Python en lloc de sentències SQL directes.
Avantatges de Flask-SQLAlchemy:
- Simplificació de la configuració: Facilita la configuració de SQLAlchemy amb Flask.
- Integració fluida: Proporciona una integració perfecta amb les funcionalitats de Flask.
- Abstracció de la base de dades: Permet treballar amb objectes Python en lloc de sentències SQL.
- Suport per a múltiples bases de dades: Compatible amb diverses bases de dades com SQLite, MySQL, PostgreSQL, etc.
Configuració de Flask-SQLAlchemy
Instal·lació
Per començar a utilitzar Flask-SQLAlchemy, primer cal instal·lar l'extensió. Pots fer-ho utilitzant pip:
Configuració Bàsica
Després d'instal·lar Flask-SQLAlchemy, cal configurar-lo dins de la teva aplicació Flask. A continuació es mostra un exemple de com fer-ho:
from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # Configuració de la base de dades app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mydatabase.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # Inicialització de l'extensió db = SQLAlchemy(app) # Definició d'un model 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}>' if __name__ == '__main__': app.run(debug=True)
Explicació del Codi
- Importacions: Importem les classes necessàries de Flask i Flask-SQLAlchemy.
- Configuració de l'aplicació: Creem una instància de l'aplicació Flask i configurem la URI de la base de dades. En aquest cas, utilitzem una base de dades SQLite anomenada
mydatabase.db
. - Inicialització de SQLAlchemy: Inicialitzem l'extensió SQLAlchemy amb la nostra aplicació Flask.
- Definició d'un model: Definim un model
User
amb tres columnes:id
,username
iemail
. Aquest model representa una taula a la base de dades. - Execució de l'aplicació: Executem l'aplicació Flask en mode de depuració.
Creació de la Base de Dades
Després de definir els models, cal crear la base de dades i les taules corresponents. Això es pot fer utilitzant el mètode create_all()
de l'objecte db
.
Aquest codi crea totes les taules definides pels models dins del context de l'aplicació.
Exercici Pràctic
Objectiu
Crear una aplicació Flask que utilitzi Flask-SQLAlchemy per gestionar una base de dades d'usuaris.
Passos
-
Instal·la Flask i Flask-SQLAlchemy:
pip install flask flask-sqlalchemy
-
Crea un fitxer
app.py
i afegeix el següent codi:from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 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}>' @app.route('/') def index(): return "Hello, Flask-SQLAlchemy!" if __name__ == '__main__': with app.app_context(): db.create_all() app.run(debug=True)
-
Executa l'aplicació:
python app.py
-
Verifica que la base de dades
users.db
s'ha creat al directori del teu projecte.
Solució
El codi anterior crea una aplicació Flask que utilitza Flask-SQLAlchemy per gestionar una base de dades SQLite anomenada users.db
. La base de dades conté una taula User
amb les columnes id
, username
i email
.
Conclusió
En aquesta secció, hem après què és Flask-SQLAlchemy, com instal·lar-lo i configurar-lo, i com definir models per interactuar amb una base de dades. També hem creat una aplicació Flask senzilla que utilitza Flask-SQLAlchemy per gestionar una base de dades d'usuaris. En el proper mòdul, explorarem com definir models més complexos i realitzar operacions CRUD (Crear, Llegir, Actualitzar, Esborrar) amb Flask-SQLAlchemy.
Curs de Desenvolupament Web amb Flask
Mòdul 1: Introducció a Flask
- Què és Flask?
- Configuració del Teu Entorn de Desenvolupament
- Creant la Teva Primera Aplicació Flask
- Entenent l'Estructura d'una Aplicació Flask
Mòdul 2: Conceptes Bàsics de Flask
- Enrutament i Mapeig d'URL
- Gestió de Mètodes HTTP
- Renderització de Plantilles amb Jinja2
- Treballant amb Fitxers Estàtics
Mòdul 3: Formularis i Entrada d'Usuari
Mòdul 4: Integració de Bases de Dades
- Introducció a Flask-SQLAlchemy
- Definició de Models
- Realització d'Operacions CRUD
- Migracions de Bases de Dades amb Flask-Migrate
Mòdul 5: Autenticació d'Usuaris
- Registre d'Usuaris
- Inici i Tancament de Sessió d'Usuaris
- Hashing de Contrasenyes
- Gestió de Sessions d'Usuaris
Mòdul 6: Conceptes Avançats de Flask
- Blueprints per a Aplicacions Grans
- Gestió d'Errors
- Pàgines d'Error Personalitzades
- Registre i Depuració
Mòdul 7: APIs RESTful amb Flask
- Introducció a les APIs RESTful
- Creació de Punts Finals RESTful
- Gestió de Dades JSON
- Autenticació per a APIs
Mòdul 8: Desplegament i Producció
- Configuració de Flask per a Producció
- Desplegament a Heroku
- Desplegament a AWS
- Monitorització i Optimització del Rendiment
Mòdul 9: Proves i Millors Pràctiques
- Proves Unitàries amb Flask
- Proves d'Integració
- Cobertura de Proves
- Millors Pràctiques per al Desenvolupament amb Flask