【发布时间】:2013-07-17 05:19:49
【问题描述】:
我有一个与 SQLAlchemy 和 MySQL 一起使用的 Pyramid 应用程序。对于我想将其视为布尔值的数据库字段,我一直在 SQLAlchemy 端使用“BIT”数据类型,在 MySQL 端使用 BIT(1)。
这一切都很好,但是我在我的虚拟主机上检查了一些新更新的代码,他们的 phpMyAdmin 版本比我在本地使用的版本新;我正在浏览一个具有 BIT 字段的表,而在较新的 phpMyAdmin 上没有出现任何数据 - 它只是空白。在我的本地实例上,BIT 字段显示为 0 或 1。如果我尝试内联编辑托管的 phpMyAdmin,它不会采用我尝试过的任何值。我确实尝试了我的应用程序代码,它似乎能够很好地切换真/假值。
这让我想知道 - 通过这种设置,我应该以不同的方式处理它吗? SQLAlchemy 确实支持布尔值,这似乎更直观和合适,我应该使用它并将 MySQL 字段设置为 TINYINT 吗?
在 SQLAlchemy 和 MySQL 之间处理布尔值的传统方法是什么?
【问题讨论】:
-
MySQL 实际上有一个
BOOLEAN数据类型,但它是TINYINT(1)的别名。使用BIT(1)不会保存任何内容,因为它仍然需要一个完整的字节来存储。我绝对推荐使用 SQLAlchemy Boolean 和 MySQLTINYINT。如果您想强制约束TINYINT只能是0或1,您可以通过将其作为外键添加到Booleans表中来实现。 -
啊,我没有意识到这一点,或者我看到了 tinyint 引用但没有看到完整的 BOOLEAN 本机类型。谢谢!
标签: mysql phpmyadmin sqlalchemy pyramid