私はcassandra-driver 2.5.0(およびcqlengineモデル)でpython 3.4.0のcassandraを使用しています。
アプリ データは、管理用の 1 つのキースペースとユーザーごとに 1 つのキースペースに分散されます。master+custom の 2 つのキースペースを照会する必要があります。
次のように使用されるキースペース切り替え用の小さなクラスをコーディングしました。
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
安全ですか?
ありがとう