Interagire con i Database in Python: Una Guida a SQLAlchemy

Python

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 Esperti

Hai 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