cqlenengine 多重键空间
cqlengine multilpe keyspaces
我正在使用来自 python 3.4.0 的 cassandra 和 cassandra-driver 2.5.0(和 cqlengine 模型)。
应用数据分布在:一个keyspace用于管理,一个keyspace为每个用户。我需要查询两个键空间:master+custom.
我已经编写了一个很小的 class 键空间切换代码,如下所示:
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 重新编码为:
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
安全吗?
谢谢
这个问题是旧的,希望这对其他人有帮助。
是的,第二种方法是正确的。 get_session()
和 set_session()
没有效果,因为它检查是否设置了 models.DEFAULT_KEYSPACE
并且仅在未设置时设置新的键空间。因此,要有效地更改键空间,您需要更改 models.DEFAULT_KEYSPACE
我正在使用来自 python 3.4.0 的 cassandra 和 cassandra-driver 2.5.0(和 cqlengine 模型)。
应用数据分布在:一个keyspace用于管理,一个keyspace为每个用户。我需要查询两个键空间:master+custom.
我已经编写了一个很小的 class 键空间切换代码,如下所示:
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 重新编码为:
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
安全吗?
谢谢
这个问题是旧的,希望这对其他人有帮助。
是的,第二种方法是正确的。 get_session()
和 set_session()
没有效果,因为它检查是否设置了 models.DEFAULT_KEYSPACE
并且仅在未设置时设置新的键空间。因此,要有效地更改键空间,您需要更改 models.DEFAULT_KEYSPACE