2017-05-12 106 views
0

当通过pythons csh模块连接到cassandra并试图运行一个简单的select查询时,我似乎得到一个返回的布尔值而不是查询结果。当我去到卡桑德拉箱并打开cqlsh壳直接查询卡桑德拉我得到的结果:从cql查询cassandra返回true而不是查询结果

$ ./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> 

然而,当我试图从远程蟒蛇外壳上面我得到的布尔值“真”返回。

>>> 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 
>>> 

无论我看起来这似乎返回查询结果,所以我错过了什么?

一个

回答

1

你需要通过ResultSet

迭代这是最简单的例子:

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 
+0

资源似乎是布尔值 '真'。你不能遍历它。那是什么我的问题是 – amadain

+0

>>>中行在res: ...打印行 ... 回溯(最近通话最后一个): 文件“”,1号线,在 类型错误:“布尔”对象不可迭代 >>>类型(res) >>> – amadain

+0

@amadain更新回答 –