尝试使用在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:连接名称''在注册表中不存在。
答案 0 :(得分:2)
这是一个已知问题,将在下一版本(3.8.0)中修复:https://datastax-oss.atlassian.net/browse/PYTHON-649
作为一种解决方法,您可以查看是否可以在任何UDT模型定义或降级到3.6之前设置连接。
答案 1 :(得分:0)
我也遇到了这个问题(cassandra-driver 3.13),因为我不得不将cassandra共享模型从一些烧瓶应用程序和其他简单组件中分离出来进行批处理。我最终发现它的工作原理在下面的代码段中(重要位是register_connection
和set_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)