使用 sqlalchemy 时如何配置使用 postgresql 的 uuid 类型

在 sqlalchemy 中 postgresql 的 uuid 类型对象是: sqlalchemy.dialects.postgresql.UUID, 所以基本的用法是:

from sqlalchemy.dialects.postgresql import UUID

id = Column(UUID)

下面重点要说的就是如何设置自动生成随机的 uuid。

第一种办法是,使用 python 的 uuid模块生成 uuid:

id = Column(UUID, default=lambda: str(uuid.uuid4()))

第二种办法(推荐)是,服务端去生成 uuid 之 gen_random_uuid():

from postgreql import text

id = Column(UUID, server_default=text("gen_random_uuid()"))

gen_random_uuid()并不是默认可用的,需要在数据库中安装 pgcrypto模块(下面的操作在 postgresql 数据库控制台中操作):

# \c db_name
# create extension pgcrypto;
CREATE EXTENSION
# select gen_random_uuid();
           gen_random_uuid            
--------------------------------------
 52f3e12b-b42a-47df-80de-6bfd9396b87e
(1 row)

第三种办法是,服务端去生成 uuid 之 uuid_generate_v4():

id = Column(UUID, server_default=text("uuid_generate_v4()"))

需要在数据库中安装 uuid-ossp模块:

# \c db_name
# create extension "uuid-ossp";
CREATE EXTENSION
# select uuid_generate_v4();
           uuid_generate_v4           
--------------------------------------
 53153822-8516-45d7-8804-9792439e449a
(1 row)

参考资料

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值