Python 操作Cassandra

Cassandra 协议

Cassandra 支持两种协议。 传统的thrift 协议和更强大的native 协议。 默认地它们分别侦听9160 端口和9042 端口。 要使用native 协议,需要设置
start_native_transport: true
native_transport_port: 9042

Python 有2个模块, pycassa 和 python-driver。 前者仅仅支持thrift 协议, 后者仅仅支持native 协议。 选择正确的模块是能够正常工作的第一步。

另外,如果想通过pycassa 去访问由CQL3 创建的表, CQL3 创建的时候必须指定WITH COMPACT STORAGE 选项

CREATE TABLE clicks (
        key text,
        column1 timestamp,
        value text,
        PRIMARY KEY (key, column1)
        ) WITH COMPACT STORAGE;

另外,pycassa 已经很少更新了,只有在native 协议被disable 的时候才会被用到。 刚检查了一下github, pycassa 最后一次更新是2014/8/9, python-driver 的最后更新是2个小时前。

参考文档:

  1. http://www.meetup.com/Austin-Cassandra-Users/events/147573572/
  2. http://www.datastax.com/dev/blog/thrift-to-cql3
  3. http://stackoverflow.com/questions/14185291/reading-cassandra-1-2-table-with-pycassa

pycassa

ColumnFamily 基本操作
>>> from pycassa.pool import ConnectionPool
>>> from pycassa.columnfamily import ColumnFamily
>>> pool = ConnectionPool('test', ['10.43.100.19:9160'])
>>> cf = ColumnFamily(pool, 'user_profiles')
>>> cf.insert(1, {'fname': 'f1', 'lname': 'l1'})  # 注意单行插入 row key 和 column data 之间用,
>>> cf.insert(2, {'fname': 'f2', 'lname': 'l2'})
>>> cf.batch_insert({3: {'fname': 'f3', 'lname': 'l3'}, 4: {'fname': 'f4', 'lname': 'l4'}}) # 注意多行插入 row key 和 column data 之间用:, 不同行之间用,
>>> cf.get(1)
>>> cf.get(1, columns=['fname'])
>>> cf.get('row_key', column_start='5', column_finish='7')
>>> cf.get('row_key', column_reversed=True, column_count=3)
>>> cf.multiget(['row1', 'row2'])
>>> for i in cf.get_range():
>>> for i in cf.get_range(start='row_key5', finish='row_key7')
>>> cf.get_count('foo')  # cf里面foo 这一行总共有多少列
>>> cf.get_count('row_key', columns=['foo', 'bar']) #  只去寻找'for', 'bar' 的这2列
SystemManager

SystemManager 主要用于执行System 级别的一些命令,如keyspace/column family 的创建修改删除工作, 获得Cluster 级别的信息。

pycassa 不能获得ColumnFamily 的很多属性值的信息, 例如system.schema_columnfamilies 的信息。
参考文档
  1. http://pycassa.github.io/pycassa/api/pycassa/system_manager.html
  2. http://pycassa.github.io/pycassa/tutorial.html

转载于:https://www.cnblogs.com/zhfan/p/4181529.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值