无法将cassandra blob / bytes字符串转换为整数

时间:2016-09-21 09:02:13

标签: python cassandra cqlsh cqlengine

我在cassandra-3.0.6中有一个列族/表,它有一个名为&#34的列;值"它被定义为blob数据类型。

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

  

id |名字|值

     

id_001 |约翰| 0x010000000000000000

     

id_002 |特里| 0x044097a80000000000

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

  

{' id':' id_001',' name':' john',' value':& #39; \ X01 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00'}

     

{' id':' id_002',' name':' terry',' value':& #39; \ X04 @ \ X97 \ xa8 \ X00 \ X00 \ X00 \ X00 \ X00'}

理想情况下,"值"中的值对于01514,字段为row1row2

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

问题:

  1. 这种格式是什么? '\x01\x00\x00\x00\x00\x00\x00\x00\x00''\x04@\x97\xa8\x00\x00\x00\x00\x00'
  2. 如何将这些任意值转换为01514
  3. 注意:我在Linux上使用python 2.7.9

    任何帮助或指针都会有用。

    谢谢,

1 个答案:

答案 0 :(得分:0)

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

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

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

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