BigTable - 你能存储布尔值吗?

BigTable - Can you store boolean values?

是否可以存储布尔值?

我尝试在 BigTable 中存储一个 True 值,但收到错误消息:

TypeError: True could not be converted to bytes

查看GitHub中的代码,使用了函数_to_bytes,无法转换为字节会报错

是否有推荐的存储布尔数据的方法?或者我应该只转换 True/False 然后记得在检索数据时将值转换回布尔值?

您不能使用 Python 在 BigTable 中存储布尔类型。

这就是documentation所说的可以存储在BigTable中的数据类型:

Cloud Bigtable treats all data as raw byte strings for most purposes

因此,正如您所说,您拥有的最佳选择似乎是将 "True/False" 转换为字符串,并在获取数据时将数据转换回布尔值。

这就是 HBase 在 Bytes.java 中将布尔值转换为字节的方式:

  public static byte [] toBytes(final boolean b) {
    return new byte[] { b ? (byte) -1 : (byte) 0 };
  }

Java cloud-bigtable-client 鼓励 java 用户使用 class 将基元转换为值。其他库中可能应该有类似的 class 来帮助鼓励常见的转换。