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

时间:2016-02-16 13:28:33

标签: python cassandra cqlengine

我有以下代码

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中的过滤器执行的选择使用之前定义的某些行的旧键盘。如何使模型使用我每次为连接设置的会话?

1 个答案:

答案 0 :(得分: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当前实现的方式。我建议你看看基本驱动程序,并在可能的情况下使用它。