Per connettere un'applicazione Python a un database relazionale come PostgreSQL o MySQL, si usano delle librerie che implementano la DB-API di Python. Tuttavia, scrivere query SQL come stringhe nel codice può essere verboso e soggetto a errori. Per questo esistono gli Object-Relational Mapper (ORM), e in Python, lo standard è SQLAlchemy.
I Due Volti di SQLAlchemy
SQLAlchemy è composto da due componenti distinti, che possono essere usati separatamente o insieme.
1. SQLAlchemy Core
Il Core è un "SQL Expression Language". È un toolkit che fornisce un modo "Pythonico" per costruire query SQL come oggetti Python, senza scrivere SQL come stringhe. Questo rende il codice più leggibile, riutilizzabile e meno soggetto a SQL injection, perché i parametri vengono gestiti in modo sicuro.
Esempio:
from sqlalchemy import create_engine, text
engine = create_engine("postgresql://user:pass@host/db")
with engine.connect() as connection:
result = connection.execute(text("SELECT * FROM users WHERE id = :user_id"), {"user_id": 1})
user = result.fetchone()
2. SQLAlchemy ORM
L'ORM è costruito sopra il Core e fornisce un livello di astrazione ancora più alto. Permette di mappare le tabelle del database a classi Python (i "modelli"), e le righe a istanze di queste classi. In questo modo, puoi interagire con il database manipolando oggetti Python, senza scrivere quasi mai una riga di SQL.
Esempio:
# Definisci la classe mappata alla tabella "users"
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
# Fai una query usando oggetti Python
session = Session(engine)
user = session.query(User).filter_by(id=1).first()
print(user.name)
Perché Usare un ORM come SQLAlchemy?
- Produttività: Accelera enormemente lo sviluppo, perché non devi scrivere SQL per le operazioni CRUD (Create, Read, Update, Delete) di base.
- Astrazione dal Database: Il tuo codice interagisce con gli oggetti. Se un giorno dovessi cambiare database da MySQL a PostgreSQL, in teoria non dovresti modificare il tuo codice, ma solo la stringa di connessione.
- Codice più Leggibile: La logica di interazione con il database è più vicina al resto del tuo codice a oggetti.
SQLAlchemy è la libreria di riferimento per l'accesso ai dati in Python, usata da framework come Flask e FastAPI.
Cosa Possiamo Fare per Te
Sviluppiamo applicazioni Python con architetture dati robuste e performanti. Che si tratti di progettare uno schema di database relazionale, ottimizzare le query o costruire un'applicazione basata su un ORM, abbiamo le competenze per creare il backend dati perfetto per il tuo progetto.
Parla con i nostri EspertiHai bisogno di una soluzione su misura?
Dalla Web App al gestionale custom, trasformiamo le tue idee in software performante. Contattaci per una consulenza gratuita.
Richiedi una consulenza