用pycass阅读Cassandra 1.2表

2024-06-01 12:18:16 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Cassandra 1.2。我使用CQL 3创建了一个表,方法如下:

CREATE TABLE foo (
    user text PRIMARY KEY,
    emails set<text>
);

现在我试图通过pycassa查询数据:

^{pr2}$

这给了我

Traceback (most recent call last):
  File "test.py", line 5, in <module>
    foo = pycassa.ColumnFamily(pool, 'foo')
  File "/home/john/src/pycassa/lib/python2.7/site-packages/pycassa/columnfamily.py", line 284, in __init__
    self.load_schema()
  File "/home/john/src/pycassa/lib/python2.7/site-packages/pycassa/columnfamily.py", line 312, in load_schema
    raise nfe
pycassa.cassandra.ttypes.NotFoundException: NotFoundException(_message=None, why='Column family foo not found.')

如何做到这一点?在


Tags: textinpysrchomefoolibpackages
3条回答

如果您已经使用CQL3创建了表,并且希望通过基于thrift的客户机访问它们,则必须指定Compact Storage属性。e、 g组:

CREATE TABLE dummy_file_test
(
 dtPtn          INT,
 pxID           INT,
 startTm        INT,
 endTm          INT,
 patID          BIGINT,
 efile          BLOB,
 PRIMARY KEY((dtPtn, pxID, startTm))
)with compact storage;  

这是我在使用Pycassa访问基于CQL3的列族时必须做的事情

使用CQL3创建的列族不能使用pycassa使用的Thrift API。在

{如果你能有更多的问题。在

我正在用cassandra1.2.8和pycassa1.9.0和CQL3进行测试。我能够验证在CQL3中使用createtable语句期间使用的“WITH COMPACT STORAGE”创建的表是否使表(列族)对pycassa可见。不幸的是,我无法找到如何修改表以使“WITH COMPACT STORAGE”显示在DESCRIBE table命令中。ALTER TABLE WITH语句本应允许您更改该设置,但没有运气。在

要验证结果,只需使用CQL3创建两个表,一个使用压缩存储,另一个不使用紧凑存储,结果可重新生成。在

看起来要完成所述的目标,需要删除表,然后使用CREATE语句中的“WITH COMPACT STORAGE”选项重新创建表。如果不希望丢失任何数据,则可能重命名现有表,使用正确的选项创建新的空表,然后将数据移回所需的表中。当然,除非您可以找到如何正确地修改表,如果可能的话,这会更容易。在

相关问题 更多 >