python cassandra 创建space table并写入和查询数据
from cassandra.cluster import Cluster cluster = Cluster(["10.178.209.161"]) session = cluster.connect() keyspacename = "demo_space" session.execute("create keyspace %s with replication = {'class': 'SimpleStrategy', 'replication_factor': 1};" % keyspacename) # use keyspace; create a sample table session.set_keyspace(keyspacename) s = session try: s.execute("CREATE TABLE blobbytes (a ascii PRIMARY KEY, b blob)") except: pass params = ['key1', bytearray(b'blob1')] s.execute("INSERT INTO blobbytes (a, b) VALUES (%s, %s)", params) results = s.execute("SELECT * FROM blobbytes") print "********************" for x in results: print x.a, x.b try: s.execute("CREATE TABLE list_test (a ascii PRIMARY KEY, b list<blob>)") except: pass params = ['some key here', [bytearray(b'blob1'), bytearray(b'hello world')]] s.execute("INSERT INTO list_test (a, b) VALUES (%s, %s)", params) results = s.execute("SELECT * FROM list_test") print "********************" for x in results: print x.a, x.b
结果:
******************** key1 blob1 ******************** some key here ['blob1', 'hello world']
最后补充:
cassandra的update和mongo的upsert效果一样!如果where的条件不满足,则会insert into!
params2 = [[bytearray(b'blob2'), bytearray(b'hello world2')], "other key"] s.execute("UPDATE list_test set b = b + %s WHERE a = %s", params2) # 会直接将other key的东西插入数据库!如果other key不存在的话!
见:http://stackoverflow.com/questions/17348558/does-an-update-become-an-implied-insert