gpt4 book ai didi

python - cqlengine multilpe 键空间

转载 作者:行者123 更新时间:2023-12-01 04:42:17 25 4
gpt4 key购买 nike

我正在将 python 3.4.0 中的 cassandra 与 cassandra-driver 2.5.0 (和 cqlengine 模型)一起使用。

应用程序数据分布在:一个用于管理的 key 空间和每个用户一个 key 空间。我需要查询两个键空间: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):

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没有效果?

检查此内容是否安全?

谢谢

最佳答案

这个问题很老了,希望这对其他人有帮助。

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

关于python - cqlengine multilpe 键空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30335649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com