我正在使用python 3.4.0中的cassandra和Cassandra-Driver2.5.0(和using模型)。
应用程序数据分布在:一个用于管理的密钥空间和每个用户一个密钥空间。我需要查询两个键空间: master+custom。
我编写了一个用于键空间切换的小类,如下所示:
with keyspace(new_keyspace):
#do stuff with new_keyspace
#do stuff with previous keyspace我的第一个版本是:
class keyspace(object):
def __init__(self, new_keyspace):
self.new_keyspace = new_keyspace
self.old_keyspace = get_session().keyspace
def __enter__(self):
session = get_session()
session.set_keyspace()
connection.set_session(session)
def __exit__(self, type, value, traceback):
session = get_session()
session.set_keyspace(self.old_keyspace)
connection.set_session(session) 根本不起作用。我在课堂上重编了以下内容:
class keyspace(object):
def __init__(self, new_keyspace):
self.new_keyspace = new_keyspace
self.old_keyspace = cassandra.cqlengine.models.DEFAULT_KEYSPACE
def __enter__(self):
cassandra.cqlengine.models.DEFAULT_KEYSPACE = self.new_keyspace
def __exit__(self, type, value, traceback):
cassandra.cqlengine.models.DEFAULT_KEYSPACE = self.old_keyspace最后一段代码可以工作,但是我在使用DEFAULT_KEYSPACE时感到不安全。
为什么get_session(),set_session没有作用?
cassandra.cqlengine.models.DEFAULT_KEYSPACE检查这个安全吗?
谢谢
发布于 2015-07-24 11:32:07
这个问题很老了,希望这能帮到别人。
是的,第二种方法是正确的。get_session()和set_session()没有任何效果,因为它检查models.DEFAULT_KEYSPACE是否被设置,并且只有在没有设置时才设置新的键空间。因此,要有效地更改键空间,需要更改models.DEFAULT_KEYSPACE。
https://stackoverflow.com/questions/30335649
复制相似问题