为了账号安全,请及时绑定邮箱和手机立即绑定

【呆鸟译Py】玩转SQLAlchemy 03 - 数据类型

标签:
MySQL

SQLAlchemy 主要支持以下四种数据类型:

  • SQLAlchemy 通用类型

  • SQL 标准类型

  • 数据库方言专属类型

  • 用户自定义类型

SQLAlchemy 通用类型

SQLAlchemy 从各种数据库的 SQL 数据类型中提取通用类型,并将之存储在 sqlalchemy.types 模块里,为了方便调用,sqlalchemy 模块里也存储了通用类型。

比如,布尔数据类型一般是 SQL 的 BOOLEAN 类型,不过,有些数据库不支持 BOOLEAN,用的是 SMALLINT,借助 SQLAlchemy,则大可不必再去关心这些细节,在 Python 代码里只要写 TrueFalse 就行了。

SQLAlchemy 通用类型在数据库迁移时特别实用,比如数据仓库里用 MySQL,而迁移的数据库用的是 Oracle,这时候用通用类型就不用考虑这两种数据库的数据类型区别,是不是简单多了!

通用类型、Python 与 SQL 对应的说明见下表:

SQLAlchemyPythonSQL
BigIntegerintBIGINT
BooleanboolBOOLEAN 或 SMALLINT
Datedatetime.dateDATE (SQLite: STRING)
DateTimedatetime.datetimeDATETIME (SQLite: STRING)
EnumstrENUM 或 VARCHAR
Floatfloat  或 DecimalFLOAT  或 REAL
IntegerintINTEGER
Intervaldatetime.timedeltaINTERVAL 或 DATE from epoch
LargeBinarybyteBLOB 或 BYTEA
Numericdecimal.DecimalNUMERIC 或 DECIMAL
UnicodeunicodeUNICODE 或 VARCHAR
TextstrCLOB 或 TEXT
Timedatetime.timeDATETIME

webp

提示

编写 SQLAlchemy 程序时经常会用到通用类型,一定要牢记本表的内容。

此表摘自 Essential SQLAlchemy 一书。

SQL 标准类型

SQL 标准类型存储在 sqlalchemy.types 模块里,为了区分 SQLAlchemy 通用类型,SQL 标准类型用大写字符表示。

用处理 SQLAlchemy 定义概构时,一定要精准匹配数据类型。这里特别要注意,不同数据库的 SQL 标准类型会不同,要注意这些区别。

如果数据库概构已经指定使用 SQL 的某种特定类型,就不宜再用 SQLAlchemy 的通用类型,而建议使用 SQL 标准类型,比如,CHARNVARCHAR 这两种类型。

方言专属类型

方言专属类型存储在 sqlalchemy.dialects 模块里,每种方言都有对应的子模块。为了区分 SQLAlchemy 通用类型,这些类型也用大写字符表示。比如,下列语句调用 PostgreSQL 的 JSON 字段。

from sqlalchemy.dialects.postgresql import JSON

和 SQL 标准类型一样,方言专属类型也非常实用。只是这种数据类型只能在特定数据库里生效。要想了解具体方言专属类型,请查看该方言文档或

用户自定义类型

SQLAlchemy 支持根据数据存储方式自行定义数据类型。比如,向数据库增加记录时为 VARCHAR 列的文本添加前置字符;等到从字段里提取文本时,再去除前置字符。为新系统里的老系统遗留数据添加前缀时,这种自定义类型非常实用。

了解数据类型后,下一篇文章学习怎么用元数据封装数据库概构



作者:呆鸟的简书
链接:https://www.jianshu.com/p/f1364df32652


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消