cqlenengine 连接 set_session() 不处理不同的键空间

cqlengine connection set_session() not handling different keyspaces

我有以下代码

from cassandra.cqlengine import connection


#inside a flask function
session = get_session_for_keyspace(keyspace)
connection.set_session(session)

object_list = ModelTable.objects.filter(....)

但是,尽管会话 "points" 更正了键空间,但 ModelTable 中的过滤器执行的 select 使用了之前定义的旧键空间。如何让模型使用我每次为连接设置的会话?

Apostolos,它正在使用您的会话,但是默认键空间是在第一次调用 set_session 方法时设置的。在 cqlengine 的此处查看此代码,连接 class。我猜您的模型没有定义键空间,因此使用默认键空间。

https://github.com/datastax/python-driver/blob/master/cassandra/cqlengine/connection.py#L85-88

如果您在不同的密钥空间中使用不同的模型并且只是想切换连接 class。你可以在你的模型中定义一个默认的键空间,它也应该适用于这种特定情况。

您的模型需要在 class 级别覆盖此值。 https://github.com/datastax/python-driver/blob/master/cassandra/cqlengine/models.py#L311

在多个 cassandra 键空间中使用相同的模型有点与 cqlenengine 当前的实现方式相冲突。我会建议您考虑下降到基本驱动程序,并在可能的情况下使用它。