Dialekt postgres sqlalchemy podporuje sloupce UUID. To je snadné (a otázka je konkrétně postgres) – nechápu, proč jsou všechny ostatní odpovědi tak složité.
Zde je příklad:
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)
Dávejte pozor, abyste nepropásli callable
uuid.uuid4
do definice sloupce místo volání samotné funkce pomocí uuid.uuid4()
. Jinak budete mít stejnou skalární hodnotu pro všechny instance této třídy. Více podrobností zde:
Skalární, Python callable nebo ColumnElement výraz představující výchozí hodnotu pro tento sloupec, který bude vyvolán po vložení, pokud tento sloupec není jinak specifikován v klauzuli VALUES vložení.