使用 sqlalchemy 时如何配置使用 postgresql 的 uuid 类型
来源:互联网 发布:淘宝3c证书是什么 编辑:程序博客网 时间:2024/06/10 00:34
原文 https://mozillazg.com/2016/01/sqlalchemy-use-postgresql-uuid.html
主题 PostgreSQL SQLAlchemy
在 sqlalchemy 中 postgresql 的 uuid 类型对象是: sqlalchemy.dialects.postgresql.UUID
, 所以基本的用法是:
from sqlalchemy.dialects.postgresql import UUIDid = Column(UUID)
下面重点要说的就是如何设置自动生成随机的 uuid。
第一种办法是,使用 python 的 uuid
模块生成 uuid:
id = Column(UUID, default=lambda: str(uuid.uuid4()))
第二种办法(推荐)是,服务端去生成 uuid 之 gen_random_uuid()
:
from postgreql import textid = 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)
参考资料
- PostgreSQL — SQLAlchemy 1.1 Documentation
- Column Insert/Update Defaults — SQLAlchemy 1.1 Documentation
- How to set a column default to a PostgreSQL function using SQLAlchemy? - Stack Overflow
- PostgreSQL: Documentation: 9.5: pgcrypto
- PostgreSQL: Documentation: 9.5: uuid-ossp
阅读全文
0 0
- 使用 sqlalchemy 时如何配置使用 postgresql 的 uuid 类型
- Postgresql: UUID的使用
- Postgresql: UUID的使用
- Postgresql: UUID的使用
- PostgreSQL 枚举类型的使用
- postgreSQL ARRAY 类型的使用
- SQLAlchemy的简单使用
- Python-SQLAlchemy的使用
- SQLAlchemy的基本使用
- 使用SQLAlchemy时数据库连接池的问题
- 如何使用sqlatuocode正向生成sqlalchemy格式的mapper类
- 使用 SQLAlchemy
- sqlalchemy使用
- 使用sqlalchemy
- 使用SQLAlchemy
- 使用SQLAlchemy
- 使用 sqlalchemy
- 使用SQLAlchemy
- 视频VR/点播/直播播放器研究与OpenGL(1)
- mysql_replace into
- MySQL中的datetime与timestamp比较
- 图像处理12:获取程序执行时间
- 变量在计算机中的存储方式。
- 使用 sqlalchemy 时如何配置使用 postgresql 的 uuid 类型
- Java 线程同步
- 回文串最小划分 dp
- 文献学习-Generating Hard Instances of Lattice Problems
- MapReduce任务的优化
- bzoj 1821 部落划分
- 我的常用笔记
- 消息代理RabbitMQ——介绍篇
- Java封装入门讲解(深入浅出)