从cql查询cassandra返回true而不是查询结果

时间:2017-05-12 13:35:23

标签: python cassandra cql

当通过pythons csh模块连接到cassandra并尝试运行一个简单的select查询时,我似乎得到一个布尔值而不是查询结果。当我进入cassandra框并打开cqlsh shell并直接查询cassandra时,我得到了结果:

$ ./cqlsh
Connected to stg_sal_cluster at localhost:9160.
[cqlsh 4.1.1 | Cassandra 2.0.17.858 | DSE 4.6.11 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
Use HELP for help.
cqlsh> use "SAL";
cqlsh:SAL> select * from sal_metadata where key='972cca8691c0804f685702d4a307b44f60cc59254094c903354f55779344bd94';

 key                                                              |    column1                                                                  | value
------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------------------------------------------------
 972cca8691c0804f685702d4a307b44f60cc59254094c903354f55779344bd94 | Alternate|THUMBNAIL_MEDIUM_RESULT:true|h:320|mt:image/jpeg|s:19477|w:320 | sal:5797d15fe18e5d58a74c927d342142f998ea084359f6a789f1cb2ba924231d95
 972cca8691c0804f685702d4a307b44f60cc59254094c903354f55779344bd94 |                                                              CI_COMPLETE |                                                                 true
 972cca8691c0804f685702d4a307b44f60cc59254094c903354f55779344bd94 |                                                             Capture-Date |                                             2008-11-08T06:13:02.000Z
 972cca8691c0804f685702d4a307b44f60cc59254094c903354f55779344bd94 |                                                       ContentPermissions |                                                                SHARE
 972cca8691c0804f685702d4a307b44f60cc59254094c903354f55779344bd94 |                                                                   Height |                                                                 2112
 972cca8691c0804f685702d4a307b44f60cc59254094c903354f55779344bd94 |                                                                Mime-Type |                                                           image/jpeg
 972cca8691c0804f685702d4a307b44f60cc59254094c903354f55779344bd94 |                                                                    Width |                                                                 2816
 972cca8691c0804f685702d4a307b44f60cc59254094c903354f55779344bd94 |                                                                  sal.loc |                                        /opt/newbay/storage/sal/tank3
 972cca8691c0804f685702d4a307b44f60cc59254094c903354f55779344bd94 |                                                                 sal.size |                                                              1385855

(9 rows)

cqlsh:SAL>

然而,当我从远程python shell尝试上述操作时,我得到了布尔值' True'返回。

>>> import cql
>>> con=cql.connect('10.10.10.10', 9160,  'SAL')
>>> cursor = con.cursor()
>>> CQLString = "select * from sal_metadata where key='972cca8691c0804f685702d4a307b44f60cc59254094c903354f55779344bd94';"
>>> res=cursor.execute(CQLString)
>>> res.fetch()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'bool' object has no attribute 'fetch'
>>> res
True
>>>

到处都看,这似乎会返回查询结果,所以我错过了什么?

A

1 个答案:

答案 0 :(得分:1)

您需要遍历结果集

这是最简单的例子:

from cassandra.cluster import Cluster
cluster = Cluster(['10.10.10.10'])
session = cluster.connect('SAL')

CQLString = "select * from sal_metadata where key='972cca8691c0804f685702d4a307b44f60cc59254094c903354f55779344bd94';"

for row in session.execute(CQLString)
    print row