CQL Engine有关注册表中不存在的连接名称的异常

时间:2016-09-27 08:52:14

标签: python azure cassandra-3.0 cqlengine

尝试使用在Windows 2012 Server R2 - 64位上运行的Python Cassandra-Driver客户端连接到Cassandra数据库时出现以下异常。我可以在我的个人笔记本电脑上工作,但不能在Azure上托管这台机器。我确信我错过了一些依赖,但只是不确定它们是什么。

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

我也遇到了这个问题(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', 'smfr_persistent')
_hosts = [os.environ.get('CASSANDRA_HOST', 'cassandrasmfr')]
_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)
相关问题