文章内容

2018/3/5 13:56:14,作 者: 黄兵

SQLAlchemy 与MySQL数据类型

Types

SQLAlchemy有四种数据类型:

  • 通用类型(Generic)
  • SQL标准类型(SQL standard)
  • 数据库特有类型(Vendor Specific)
  • 用户自定义类型(User Defined)

SQLAlchemy为不同的数据库定义了一些通用的数据类型。这些类型都在sqlalchemy.types模块中,为了引用方便也支持放在sqlalchemy里面。

布尔型通用类型使用BOOLEANSQL类型,对应的Python类型就是TrueFalse;但是,对那些不支持BOOLEANSQL类型的数据库通常要使用SMALLINT来代替。由于SQLAlchemy把这些细节都隐藏了,因此你可以放心大胆的操作数据,不用担心后面数据库用的是什么细节,只要在Python代码里处理TrueFalse就行。即使数据仓库和交换数据库不一样,通用类型也可以完成数据处理。通用类型对应Python和SQL的含义如下表所示:

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

掌握通用类型非常重要,会经常使用

如果通用类型不能满足需求,也会用到SQL标准类型和数据库专有类型。CHARNVARCHAR类型就是最好的例证,源自SQL类型。如果数据库的模式是在使用SQLAlchemy之前建立的,我们就要注意原模式与SQLAlchemy的差异。SQL标准类型的特性在不同的数据库里面可能有很大变化,也是在sqlalchemy.types模块中,为了和通用类型分开,都用大写字母表示。


本文转载自:SQLAlchemy Introduce

分享到:

发表评论

评论列表