在SQLAlchemy中定义的所有表都有一个UUID类型的id列。
from sqlalchemy.ext.declarative import declarative_base
from uuid import uuid4
Base = declarative_base()
class MyTable(Base):
id = Column(UUIDtype, default=uuid4, primary_key=True)其中UUIDtype是PostgreSQL UUID类型的特殊列类型。这将成功地在PostgreSQL中创建UUID列,但仅在使用SQLAlchemy插入时生成默认UUID值。对于我的一些用例来说,这是可以的,但我希望在PostgreSQL端指定列的默认值,以防插入发生在SQLAlchemy之外。
以下SQL命令将正确的默认值放在列上:
ALTER TABLE my_table ALTER COLUMN id SET DEFAULT uuid_generate_v4()如何通过uuid_generate_v4()模型定义将该SQLAlchemy函数指定为列默认值?如果唯一的选项是通过执行原始SQL语句,那么是否有办法将该语句的执行挂钩到表创建过程中?
发布于 2013-12-12 07:41:01
为此您应该使用server_default参数。
id = Column(UUIDtype, server_default=text("uuid_generate_v4()"), primary_key=True)有关详细信息,请参阅服务器端默认值。
https://stackoverflow.com/questions/20532531
复制相似问题