Il dialetto sqlalchemy postgres supporta le colonne UUID. È facile (e la domanda è specificamente postgres) -- non capisco perché le altre risposte siano tutte così complicate.
Ecco un esempio:
from sqlalchemy.dialects.postgresql import UUID
from flask_sqlalchemy import SQLAlchemy
import uuid
db = SQLAlchemy()
class Foo(db.Model):
id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
Fai attenzione a non perdere il passaggio del callable
uuid.uuid4
nella definizione della colonna, invece di chiamare la funzione stessa con uuid.uuid4()
. In caso contrario, avrai lo stesso valore scalare per tutte le istanze di questa classe. Maggiori dettagli qui:
Un'espressione scalare, richiamabile Python o ColumnElement che rappresenta il valore predefinito per questa colonna, che verrà richiamata all'inserimento se questa colonna non è altrimenti specificata nella clausola VALUES dell'inserto.