CQL引擎异常:连接名称在注册表中不存在

7
我在尝试使用运行在Windows 2012 Server R2 - 64位上的Python Cassandra-Driver客户端连接到Cassandra DB时遇到了以下异常。我可以在我的个人笔记本电脑上让它工作,但是在托管在Azure上的计算机上无法工作。我确定我缺少一些依赖项,但不确定它们是什么。
文件"C:\ Python \ Python35-32 \ lib \ site-packages \ cassandra \ cqlengine \ connection.py"中的第190行,在获取连接时引发CQLEngineException异常:“连接名称'{0}'不存在于注册表中。".format(name)Cassandra.cqlengine.CQLEngineException:连接名称''不存在于注册表中。

1
这是由于cassandra-driver-3.7版本的原因。当我将版本降级到3.6和3.5时,问题得到了解决。我的笔记本电脑上安装了3.5版本,而新机器上安装了3.7版本。仍然不确定驱动程序的小更新之间是否存在如此大的变化。 - Praneesh
2个回答

3

我也遇到了这个问题(cassandra-driver 3.13),因为我必须将cassandra共享模型与一些flask应用程序和其他简单组件分离,以进行批处理。最终我发现以下代码片段是有效的(重要部分是register_connectionset_default_connection函数):

import os

from cassandra.cluster import Cluster
from cassandra.cqlengine.connection import register_connection, set_default_connection
from flask_cqlalchemy import CQLAlchemy

cqldb = CQLAlchemy()
_keyspace = os.environ.get('CASSANDRA_KEYSPACE', 'persistent')
_hosts = [os.environ.get('CASSANDRA_HOST', 'cassandra')]
_port = os.environ.get('CASSANDRA_PORT', 9042)


def cassandra_session_factory():
    cluster = Cluster(_hosts, port=_port)
    session = cluster.connect()
    session.row_factory = dict_factory
    session.execute("USE {}".format(_keyspace))
    return session


_session = cassandra_session_factory()
register_connection(str(_session), session=_session)
set_default_connection(str(_session))


class MyModel(cqldb.Model):
    """
    Object representing the `model` column family in Cassandra
    """
    __keyspace__ = _keyspace

    session = _session
    session.default_fetch_size = 1000

    myfield = cqldb.columns.Text(primary_key=True, required=True)

2

2
这似乎仍然是一个问题,截至3.12.0版本。有没有任何机会解决它?(授予241行) - Kelvin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接