我最近升级到 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.
此问题在多个模型和查询中仍然存在。以下是有关我的设置的一些相关详细信息:
这是一个完整的错误。
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.
是否有人遇到过类似的问题或对在使用 Cassandra 的 Django 4.2 环境中解决这些错误有见解?任何帮助或指导将不胜感激。
我认为在
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)
connection.set_session(session)
#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 ..