【问题标题】:SQLAlchemy, MySQL, and python - how should I handle boolean?SQLAlchemy、MySQL 和 python - 我应该如何处理布尔值?
【发布时间】: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 和 MySQL TINYINT。如果您想强制约束 TINYINT 只能是 01,您可以通过将其作为外键添加到 Booleans 表中来实现。
  • 啊,我没有意识到这一点,或者我看到了 tinyint 引用但没有看到完整的 BOOLEAN 本机类型。谢谢!

标签: mysql phpmyadmin sqlalchemy pyramid


【解决方案1】:

MySQL 有一个BOOL 类型(这是 SQLAlchemy 使用的),所以我不确定你为什么不直接使用它?显然it is an aliasTINYINT

from sqlalchemy import Boolean,你应该很高兴。

【讨论】:

    猜你喜欢
    • 2012-09-21
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 2020-10-12
    • 2022-07-29
    相关资源
    最近更新 更多