sqlalchemypostgresダイアレクトはUUID列をサポートします。これは簡単です(そして質問は特にpostgresです)-他の答えがすべてそれほど複雑な理由がわかりません。
次に例を示します:
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)
callable
の受け渡しを見逃さないように注意してください uuid.uuid4
uuid.uuid4()
を使用して関数自体を呼び出すのではなく、列定義に追加します 。それ以外の場合は、このクラスのすべてのインスタンスで同じスカラー値になります。詳細はこちら:
この列のデフォルト値を表すスカラー、Python呼び出し可能、またはColumnElement式。この列が挿入のVALUES句で指定されていない場合、挿入時に呼び出されます。