我在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'}
理想情况下,"值"中的值对于0
和1514
,字段为row1
和row2
。
但是,我不确定如何转换"值"使用cqlengine将0
和1514
提取的字段值。我尝试了一些方法,如ord()
,decode()
等,但没有任何效果。 :(
问题:
'\x01\x00\x00\x00\x00\x00\x00\x00\x00'
或
'\x04@\x97\xa8\x00\x00\x00\x00\x00'
?0
和1514
?注意:我在Linux上使用python 2.7.9
任何帮助或指针都会有用。
谢谢,
答案 0 :(得分:0)
如果直接读取,Blob将在Python中转换为字节数组。这看起来像一个包含blob的Hex值的字节数组。
一种方法是在查询中明确进行转换。
select id, name, blobasint(value) from table limit 3
也应该有一个Python驱动程序的转换方法。