7

尝试使用在 Windows 2012 Server R2 - 64 位上运行的 Python Cassandra-Driver 客户端连接到 Cassandra DB 时出现以下异常。我可以在我的个人笔记本电脑上运行它,但不能在 Azure 上托管的机器上运行。我确定我缺少一些依赖项,但不确定它们是什么。

文件“C:\Python\Python35-32\lib\site-packages\cassandra\cqlengine\connection.py”,第 190 行,在 get_connection 中引发 CQLEngineException("Connection name '{0}' 在注册表中不存在。 ".format(name)) Cassandra.cqlengine.CQLEngineException: 注册表中不存在连接名称''。

4

2 回答 2

2

这是一个已知问题,将在下一个版本 (3.8.0) 中修复:https ://datastax-oss.atlassian.net/browse/PYTHON-649

作为一种解决方法,您可以查看是否可以在任何 UDT 模型定义或降级到 3.6 之前设置连接。

于 2016-11-09T13:20:06.270 回答
2

我也遇到了这个问题(cassandra-driver 3.13),因为我必须将 cassandra 共享模型与一些烧瓶应用程序和其他简单组件分离以进行批处理。我最终发现它的工作是在下面的片段中(重要的位是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)
于 2018-05-25T06:55:45.047 回答