sqlalchemy postgres-dialekten understøtter UUID-kolonner. Dette er nemt (og spørgsmålet er specifikt postgres) -- jeg forstår ikke, hvorfor de andre svar alle er så komplicerede.
Her er et eksempel:
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)
Pas på ikke at gå glip af at videregive den callable
uuid.uuid4
ind i kolonnedefinitionen i stedet for at kalde selve funktionen med uuid.uuid4()
. Ellers vil du have den samme skalarværdi for alle forekomster af denne klasse. Flere detaljer her:
Et skalært, Python-kaldbart eller ColumnElement-udtryk, der repræsenterer standardværdien for denne kolonne, som vil blive påkaldt ved indsættelse, hvis denne kolonne ellers ikke er angivet i VALUES-udtrykket i indsættelsen.