cquengine multilpe键空间

2024-06-01 02:04:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是python3.4.0中的cassandra和cassandra驱动程序2.5.0(以及cquengine模型)。在

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

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

with keyspace(new_keyspace):
    #do stuff with new_keyspace
#do stuff with previous keyspace

我的第一个版本是:

^{pr2}$

根本不起作用。 我用以下方法重新录制了课程:

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

最后一个代码可以工作,但是使用默认的\u键空间时我感到不安全。在

为什么get_session(),set_session没有效果?在

cassandra.cqlengine.models.DEFAULT_KEYSPACE检查是否安全?在

谢谢


Tags: selfdefaultnewmodelssessiondefwith空间
1条回答
网友
1楼 · 发布于 2024-06-01 02:04:32

问题是老问题,希望这对别人有帮助。在

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

相关问题 更多 >