关于python:peewee-的-BooleanField-是翻译为-tinyint1-还是-enumtruefalse

4次阅读

共计 675 个字符,预计需要花费 2 分钟才能阅读完成。

mysql 中实现 bool 类型的字段,个别是应用 tinyint(1)

然而有些中央,会应用 enum(‘true’,’false’) 实现 bool

那么,peewee 的 BooleanField 类型翻译为 mysql 的 DDL 的时候,是翻译为 tinyint(1) 还是 enum(‘true’,’false’) 呢?

答案是 tinyint(1)


常见问题 QA

Q: 对于 mysql,tinyint(1) 和 tinyint 有区别吗?应该没有吧
A: 在 MySQL 中,tinyint 和 tinyint(1) 在语义上是雷同的,它们都是用于示意小整数值的数据类型。在理论应用中,这两种类型的体现是一样的,它们都占用一个字节的存储空间,并能够存储 -128 到 127 之间的整数值(如果是无符号类型,则能够存储 0 到 255 之间的整数值)。

然而,在 MySQL 8.0 之前的版本中,tinyint(1)的行为略有不同。在这些旧版本中,当应用 tinyint(1)定义列时,MySQL 将该列解释为一个布尔类型(BOOL 或 BOOLEAN),而不是整数类型。也就是说,tinyint(1)被视为只能存储 0 或 1 的类型。然而,在 MySQL 8.0 中,tinyint(1)的行为曾经扭转,它被视为一个一般的整数类型,与 tinyint 完全相同。

因而,在 MySQL 8.0 及以上版本中,tinyint(1)和 tinyint 是雷同的,它们都示意一个占用一个字节存储空间的小整数值。然而,如果您正在应用 MySQL 8.0 之前的版本,则应该留神 tinyint(1)与 tinyint 之间的差别,并理解 tinyint(1)被解释为布尔类型的行为。

正文完
 0