首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cqlengine键空间

cqlengine键空间
EN

Stack Overflow用户
提问于 2015-05-19 20:35:51
回答 1查看 315关注 0票数 1

我正在使用python 3.4.0中的cassandra和Cassandra-Driver2.5.0(和using模型)。

应用程序数据分布在:一个用于管理的密钥空间和每个用户一个密钥空间。我需要查询两个键空间: master+custom。

我编写了一个用于键空间切换的小类,如下所示:

代码语言:javascript
复制
with keyspace(new_keyspace):
    #do stuff with new_keyspace
#do stuff with previous keyspace

我的第一个版本是:

代码语言:javascript
复制
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)        

根本不起作用。我在课堂上重编了以下内容:

代码语言:javascript
复制
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检查这个安全吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-24 11:32:07

这个问题很老了,希望这能帮到别人。

是的,第二种方法是正确的。get_session()set_session()没有任何效果,因为它检查models.DEFAULT_KEYSPACE是否被设置,并且只有在没有设置时才设置新的键空间。因此,要有效地更改键空间,需要更改models.DEFAULT_KEYSPACE

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30335649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档