文档章节

flask-SQLAlchemy PostgreSQL UUID 类型

ArcticF0X
 ArcticF0X
发布于 2018/09/20 16:31
字数 321
阅读 1.2K
收藏 0

SQLAlchemy 的 PostgreSQL 方言支持 UUID 类型。但是仅支持 PostgreSQL,其他数据库需要自己去实现 UUID 或者 GUID 类型. 来看lly365 github 上的一个例子:

# -*- coding: utf-8 -*-
"""
    pg_uuid
    ~~~~~~~~~~~~~~~~

    <NO DESCRIPTION>.

    :copyright: (c) 2018 by WRDLL <4ever@wrdll.com>
"""
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.dialects.postgresql import UUID
from uuid import uuid4

SECRET_KEY = 'aa'
SQLALCHEMY_DATABASE_URI = 'postgresql://ling:@localhost/test'
SQLALCHEMY_ECHO = True

app = Flask(__name__)
app.config.from_object(__name__)

db = SQLAlchemy(app)

class UuidTest(db.Model):
    __tablename__ = 'uuid_test'
    id = db.Column(UUID(as_uuid=True), primary_key=True, default=(uuid4())
    name = db.Column(db.String(10))

if __name__ == '__main__':
    app.run(debug=True)

上面的例子使用 Python 的 uuid 库来生成需要的 uuid,还有种方法是在 Postgresql 自己去生成 uuid。

gen_random_uuid()

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

\c db_name  -- 连接数据库
create extension pgcrypto; -- 安装 pgcrypto 扩展
select gen_random_uuid(); -- 测试扩展

在 python 中使用:

from sqlalchemy import text
id = Column(UUID, server_default=text("gen_random_uuid()"))
# 使用 'server_default' 让数据库去处理

uuid_generate_v4()

跟上面一样,需要在 PostgreSQL 安装相关扩展,这里是 uuid-ossp:

\c db_name
create extension "uuid-ossp";
select uuid_generate_v4();

在 python 中使用:

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

本文转载自:https://mozillazg.com/2016/01/sqlalchemy-use-postgresql-uuid.html

ArcticF0X

ArcticF0X

粉丝 6
博文 11
码字总数 2877
作品 0
长沙
私信 提问
加载中

评论(0)

Flask框架web开发:零基础入门

Flask框架是Python开发的一个基于Werkzeug和Jinja 2的web开发微框架,它的优势就是极其简洁,但又非常灵活,而且容易学习和应用。因此Flask框架是Python新手快速开始web开发最好的选择,此外...

笔阁
2018/12/11
557
0
Flask Web开发新手指南

Flask框架是Python开发的一个基于Werkzeug和Jinja 2的web开发微框架,它的优势就是极其简洁,但又非常灵活,而且容易学习和应用。因此Flask框架是Python新手快速开始web开发最好的选择,此外...

汇智网教程
2018/12/10
208
0
Python连接mysql或postgres(sqlalchemy)

安装 sudo pip install sqlalchemy 或sudo pip3 install sqlalchemy 下载速度慢可使用国内源,如: 测试1 测试2 测试3--orm方式 数据库表STUDENT的建立参考: http://my.oschina.net/u/2245...

wangxuwei
2016/04/23
1.9K
0
Flask入门数据库框架flask-SQLAlchemy(十)

Web程序开发中最重要的莫过于关系型数据库,即SQL 数据库,另外文档数据库(如 mongodb)、键值对数据库(如 redis)慢慢变得流行. 原因 : 我们不直接使用这些数据库引擎提供的 Python 包,而是...

善良小郎君
2018/06/05
0
0
Airflow 中文文档:初始化数据库后端

如果您想对Airflow进行真正的试驾,您应该考虑设置一个真正的数据库后端并切换到LocalExecutor。 由于Airflow是使用优秀的SqlAlchemy库与其元数据进行交互而构建的,因此您应该能够使用任何支...

ApacheCN_飞龙
2018/11/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

广州哪里有开餐饮费发票

广州开餐饮费发票发票电薇13564998196陈晨100 % 真。从主业来看,2019年众诚保险围绕车险业务采取增设分支机构、加强合作、优化用户体验等动作,但综合成本率仍有所上行,业内指出,车险的价...

枅票微fp2090
刚刚
0
0
深圳哪里有开餐饮费发票

深圳开餐饮费发票发票电薇13564998196陈晨100 % 真。从主业来看,2019年众诚保险围绕车险业务采取增设分支机构、加强合作、优化用户体验等动作,但综合成本率仍有所上行,业内指出,车险的价...

枅票嶶fp2090
3分钟前
5
0
略谈分布式系统中的容器设计模式

本文作者:zytan_cocoa 略谈分布式系统中的容器设计模式 谭中意 2020/3/5 前言:云原生(Cloud Native)不仅仅是趋势,更是现在进行时,它是构建现代的,可弹性伸缩的,快速迭代的计算网络服...

百度开发者中心
03/11
17
0
OSChina 周三乱弹 —— 小姐姐的领带有点带歪了,请帮忙正一下

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《アイタクテ -voice & piano-》- 和紗 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
今天
25
0
对象名称前的单下划线和双下划线是什么意思?

问题: Can someone please explain the exact meaning of having leading underscores before an object's name in Python? 有人可以解释一下在Python中对象名称前加下划线的确切含义吗? ......

技术盛宴
今天
29
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部