1

我有以下代码

from cassandra.cqlengine import connection


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

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

但是,尽管会话“指向”更正键空间,但 ModelTable 中的过滤器执行的选择使用之前定义的一些行的旧键空间。如何让模型使用我每次设置的会话进行连接?

4

1 回答 1

2

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

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

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

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

在多个 cassandra 键空间中使用相同的模型有点与当前实现 cqlengine 的方式作斗争。我建议您查看下降到基本驱动程序并在这种情况下尽可能使用它。

于 2016-02-16T16:49:23.990 回答