Le dialecte sqlalchemy postgres prend en charge les colonnes UUID. C'est facile (et la question est spécifiquement postgres) - je ne comprends pas pourquoi les autres réponses sont toutes si compliquées.
Voici un exemple :
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)
Attention à ne pas manquer de passer le callable
uuid.uuid4
dans la définition de colonne, plutôt que d'appeler la fonction elle-même avec uuid.uuid4()
. Sinon, vous aurez la même valeur scalaire pour toutes les instances de cette classe. Plus de détails ici :
Une expression scalaire, Python appelable ou ColumnElement représentant la valeur par défaut de cette colonne, qui sera invoquée lors de l'insertion si cette colonne n'est pas spécifiée dans la clause VALUES de l'insertion.