sqlalchemy postgres-dialekten stöder UUID-kolumner. Det här är enkelt (och frågan är specifikt postgres) -- jag förstår inte varför alla andra svar är så komplicerade.
Här är ett exempel:
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)
Var noga med att inte missa att skicka callable
uuid.uuid4
i kolumndefinitionen, istället för att anropa själva funktionen med uuid.uuid4()
. Annars kommer du att ha samma skalära värde för alla instanser av den här klassen. Mer information här:
Ett skalärt, Python-anropsbart eller ColumnElement-uttryck som representerar standardvärdet för denna kolumn, som kommer att anropas vid infogning om denna kolumn på annat sätt inte anges i VALUES-satsen i infogningen.