Cassandra: ошибки "Model keypace not set" и "Connection name doesn't exist in the registry".

Недавно я обновился до Django 4.2 и столкнулся с проблемой интеграции с Cassandra. Первоначально я столкнулся со следующей ошибкой при попытке создания запросов:

cassandra.cqlengine.CQLEngineException: Model keyspace is not set and no default is available. Set model keyspace or setup connection before attempting to generate a query.

Эта ошибка возникала, несмотря на указание пространства ключей модели в settings.py. В качестве попытки исправить ситуацию я явно задал пространство ключей в своих моделях следующим образом:

__keyspace__ = "my_keyspace"

Однако это привело к появлению нового набора ошибок, связанных с именами соединений, не существующих в реестре:

Connection name '<object object at 0x7f4fb00d67a0>' doesn't exist in the registry.

Эта проблема сохраняется в нескольких моделях и запросах. Вот некоторые подробности о моей установке:

  • Python 3.10
  • django-cassandra-engine 1.7.0
  • Запуск внутри Docker; подключение к Cassandra из Docker было проверено
  • .

Вот полная ошибка.

sessions, disconnected = fetch_sessions_list(ux_vms)
  File "/code/wtools2/apps/analytics/views.py", line 1652, in fetch_sessions_list
    metrics_session.extend(list(sessions_db))
  File "/usr/local/lib/python3.10/site-packages/cassandra/cqlengine/query.py", line 437, in __len__
    self._execute_query()
  File "/usr/local/lib/python3.10/site-packages/cassandra/cqlengine/query.py", line 472, in _execute_query
    self._result_generator = (i for i in self._execute(self._select_query()))
  File "/usr/local/lib/python3.10/site-packages/cassandra/cqlengine/query.py", line 456, in _select_query
    self.column_family_name,
  File "/usr/local/lib/python3.10/site-packages/cassandra/cqlengine/query.py", line 397, in column_family_name
    return self.model.column_family_name()
  File "/usr/local/lib/python3.10/site-packages/cassandra/cqlengine/models.py", line 559, in column_family_name
    raise CQLEngineException("Model keyspace is not set and no default is available. Set model keyspace or setup connection before attempting to generate a query.")

cassandra.cqlengine.CQLEngineException: Model keyspace is not set and no default is available. Set model keyspace or setup connection before attempting to generate a query.
raise CQLEngineException("Model keyspace is not set and no default is available. Set model keyspace or setup connection before attempting to generate a query.")
cassandra.cqlengine.CQLEngineException: Model keyspace is not set and no default is available. Set model keyspace or setup connection before attempting to generate a query.

Сталкивался ли кто-нибудь с подобными проблемами или имеет представление о решении этих ошибок в среде Django 4.2 с Cassandra? Любая помощь или руководство будут очень признательны.

я столкнулся с той же ошибкой в случае sync_table я думаю. я использовал базу данных datastax. я надеюсь это поможет, я сделал проверку на каждом шаге.

from cassandra.cluster import Cluster
from cassandra.cqlengine import connection

#change the below line to connect to docker cassandra instances
cluster = Cluster(['192.168.0.1', '192.168.0.2'])
#check 
print(cluster.metadata.keyspaces)

session = cluster.connect()
#check
keyspaces_from_session = session.execute(query = "SELECT keyspace_name FROM system_schema.keyspaces;")
keyspaces_from_session = [keyspace.keyspace_name for keyspace in keyspaces_from_session]
print(keyspaces_from_session)

# either this : connection.set_session(session)
# or this : connection.register_connection("default", session = session, default = True)
connection.register_connection("default", session = session, default = True)
#check
keyspaces_from_connection = connection.execute(query = "SELECT keyspace_name FROM system_schema.keyspaces;")
keyspaces_from_connection = [keyspace['keyspace_name'] for keyspace in keyspaces_from_connection]
print(keyspaces_from_connection)

#remaining commands ..
Вернуться на верх