文章内容
2018/3/5 13:56:14,作 者: 黄兵
SQLAlchemy 与MySQL数据类型
Types
SQLAlchemy有四种数据类型:
- 通用类型(Generic)
- SQL标准类型(SQL standard)
- 数据库特有类型(Vendor Specific)
- 用户自定义类型(User Defined)
SQLAlchemy为不同的数据库定义了一些通用的数据类型。这些类型都在sqlalchemy.types
模块中,为了引用方便也支持放在sqlalchemy
里面。
布尔型通用类型使用BOOLEAN
SQL类型,对应的Python类型就是True
和False
;但是,对那些不支持BOOLEAN
SQL类型的数据库通常要使用SMALLINT
来代替。由于SQLAlchemy把这些细节都隐藏了,因此你可以放心大胆的操作数据,不用担心后面数据库用的是什么细节,只要在Python代码里处理True
和False
就行。即使数据仓库和交换数据库不一样,通用类型也可以完成数据处理。通用类型对应Python和SQL的含义如下表所示:
SQLAlchemy | Python | SQL |
---|---|---|
BigInteger | int | BIGINT |
Boolean | bool | BOOLEAN or SMALLINT |
Date | datetime.date | Date (SQLite: String) |
DateTime | datetime.datetime | DATETIME (SQLite: String) |
Enum | str | ENUM or VARCHAR |
Float | float or Decimal | FLOAT or REAL |
Integer | int | Integer |
Interval | datetime.timedelta | INTERVAL or DATE from epoch |
LargeBinary | byte | BLOB or BYTEA |
Numeric | decimal.Decimal | NUMERIC or DECIMAL |
Unicode | unicode | UNICODE or VARCHAR |
Text | str | CLOB or TEXT |
Time | datetime.time | DATETIME |
掌握通用类型非常重要,会经常使用
如果通用类型不能满足需求,也会用到SQL标准类型和数据库专有类型。CHAR
和NVARCHAR
类型就是最好的例证,源自SQL类型。如果数据库的模式是在使用SQLAlchemy之前建立的,我们就要注意原模式与SQLAlchemy的差异。SQL标准类型的特性在不同的数据库里面可能有很大变化,也是在sqlalchemy.types
模块中,为了和通用类型分开,都用大写字母表示。
本文转载自:SQLAlchemy Introduce
评论列表