python3使用SQLAlchemy对mysql数据类型的映射关系表

数据类型关系表

类型名 MySQL类型 python类型 描述
SmallInteger smallint int 取值范围较小,一般为16位
Integer int int 普通整数,一般32位
BigInteger bigint int/long 不限精度的整数
Float float float 浮点数
Numeric decimal decimal.Decimal 定点数
String varchar str 变长字符串
Text tinytext str 变长字符串,64K
Text(65536) mediumtext str 变长字符串,max16M
Text(16777216) longtext str 变长字符串,max32M
LargeBinary blob str 二进制文件,64K
LargeBinary(65536) mediumblob str 二进制,max16M
LargeBinary(16777216) longblob str 二进制,max32M
PickleType blob 任何python对象 自动使用Pickle序列化,只有blob,存json数据
Unicode varchar unicode 变长字符串
UnicodeText text unicode 变长字符串,64K
Boolean tinyint bool 布尔值
Date date datetime.date 日期
Time time date.time 时间
DateTime datetime datetime.datetime 日期和时间
Interval datetime datetime.timedelta 时间间隔
Enum enum str 一组字符串

字段设置对照表

属性 描述 生效值
primary_key 主键 True
unique 键值唯一性 True
index 索引 True
nullable 空值 True
default 默认值 null

python代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Data(db.Model):
__tablename__ = "datas"
id = db.Column(db.Integer, primary_key=True)
smallInteger = db.Column(db.SmallInteger)
bigInteger = db.Column(db.BigInteger)
floatData = db.Column(db.Float(10))
numericData = db.Column(db.Numeric(10))
stringData = db.Column(db.String(250))
textData = db.Column(db.Text(200))
mediumText = db.Column(db.Text(65536))
longText = db.Column(db.Text(16777216))
largeBinary = db.Column(db.LargeBinary(300))
mediumBlob = db.Column(db.LargeBinary(65536))
longBlob = db.Column(db.LargeBinary(16777216))
pickle = db.Column(db.PickleType)
mediumPickle = db.Column(db.PickleType(65536))
longPickle = db.Column(db.PickleType(16777216))
unicodeData = db.Column(db.Unicode(10))
unicodeText = db.Column(db.UnicodeText)
booleanData = db.Column(db.Boolean(0))
dateData = db.Column(db.Date)
timeData = db.Column(db.Time)
dateTime = db.Column(db.DateTime)
interval = db.Column(db.Interval)
enumData = db.Column(db.Enum('father', 'mother'))

def __repr__(self):
return "Data {}".format(self.id)