0

我在 cassandra-3.0.6 中有一个列族/表,其中有一个名为“value”的列,它被定义为 blob 数据类型。

CQLSH 查询select * from table limit 2;返回我:

编号 | 姓名 | 价值

id_001 | 约翰 | 0x010000000000000000

id_002 | 特里 | 0x044097a80000000000

如果我使用 cqlengine(Datastax Python Driver) 读取这个值,我会得到如下输出:

{'id':'id_001', '名称':'john', '值': '\x01\x00\x00\x00\x00\x00\x00\x00\x00'}

{'id':'id_002','name':'terry','value':'\x04@\x97\xa8\x00\x00\x00\x00\x00'}

理想情况下,“值”字段中的值是0and 1514forrow1row2resp。

但是,我不确定如何将使用 cqlengine 提取的“值”字段值转换01514. 我尝试了几种方法,例如ord(),decode()等,但没有任何效果。:(

问题:

  1. 这是什么格式? '\x01\x00\x00\x00\x00\x00\x00\x00\x00'还是 '\x04@\x97\xa8\x00\x00\x00\x00\x00'
  2. 如何将这些任意值转换为0and 1514

注意:我在 Linux 上使用 python 2.7.9

任何帮助或指示都会很有用。

谢谢,

4

1 回答 1

0
  1. 如果直接读取,Blob 将在 Python 中转换为字节数组。这看起来像一个包含 Blob 十六进制值的字节数组。

  2. 一种方法是在查询中显式进行转换。

    select id, name, blobasint(value) from table limit 3

    Python驱动程序也应该有一个转换方法。

于 2016-09-22T00:09:02.767 回答