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

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)被解释为布尔类型的行为。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理