Phương ngữ sqlalchemy postgres hỗ trợ các cột UUID. Điều này thật dễ dàng (và câu hỏi cụ thể là postgres) - Tôi không hiểu tại sao các câu trả lời khác đều phức tạp như vậy.
Đây là một ví dụ:
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)
Hãy cẩn thận để không bỏ lỡ việc chuyển callable
uuid.uuid4
vào định nghĩa cột, thay vì gọi chính hàm bằng uuid.uuid4()
. Nếu không, bạn sẽ có cùng một giá trị vô hướng cho tất cả các trường hợp của lớp này. Thêm chi tiết tại đây:
Một biểu thức vô hướng, Python có thể gọi hoặc ColumnElement đại diện cho giá trị mặc định cho cột này, sẽ được gọi khi chèn nếu cột này không được chỉ định trong mệnh đề VALUES của chèn.