我也遇到了这个问题(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', '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)