首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PostgreSQL将列默认设置为SQLAlchemy函数?

问如何使用PostgreSQL将列默认设置为SQLAlchemy函数?
EN

Stack Overflow用户
提问于 2013-12-12 00:06:13
回答 1查看 10.8K关注 0票数 25

在SQLAlchemy中定义的所有表都有一个UUID类型的id列。

代码语言:javascript
复制
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命令将正确的默认值放在列上:

代码语言:javascript
复制
ALTER TABLE my_table ALTER COLUMN id SET DEFAULT uuid_generate_v4()

如何通过uuid_generate_v4()模型定义将该SQLAlchemy函数指定为列默认值?如果唯一的选项是通过执行原始SQL语句,那么是否有办法将该语句的执行挂钩到表创建过程中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-12 07:41:01

为此您应该使用server_default参数。

代码语言:javascript
复制
id = Column(UUIDtype, server_default=text("uuid_generate_v4()"), primary_key=True)

有关详细信息,请参阅服务器端默认值。

票数 44
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20532531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档