【问题标题】:How to use Cassandra Model classes with the Cluster class?如何将 Cassandra 模型类与 Cluster 类一起使用?
【发布时间】:2017-06-12 15:46:41
【问题描述】:

我是第一次使用 Cassandra,但有在 SQLAlchemy 等库中设置 ORMS 的经验。在this page as an example 之后,我使用cassandra.cqlengine.models.Model 类作为基类设置了我的表,并使用sync_table 进行设置,例如:

from cassandra.cqlengine import columns
from cassandra.cqlengine.models import Model
from cassandra.cqlengine.management import sync_table

class Message(Model):
    id = columns.Text(primary_key=True)
    message = columns.Text()

sync_table(Message)

但我见过的大多数 Python/Cassandra 示例代码都使用 cassandra.cluster.Cluster 对象来定义他们的会话 as described here

似乎使用Cluster 可以更好地管理会话,但限制您使用原始文本查询。有没有一种很好的方法可以将 Cluster 对象与我定义的 ORM 一起使用?

我想我可以这样做:

import cfg

from cassandra.cqlengine import connection
from cassandra.cluster import Cluster

cluster = Cluster(cfg.cassandra_dbs)
session = cluster.connect(cfg.cassandra_keyspace)
connection.set_session(session)

由于我担心只有一个 db/keyspace/etc,如果我的模型将其用作连接,那么如果在应用程序中全局设置它可能没关系。这是建议的方法,还是有更好的方法?

谢谢!

【问题讨论】:

    标签: python cassandra datastax


    【解决方案1】:

    如果您只有一个集群和键空间,全局会话配置是最简单的方法。

    对于更复杂的用例,请使用驱动程序 3.7.0 中引入的注册连接功能: http://www.datastax.com/dev/blog/python-driver-3-7-0-released https://datastax.github.io/python-driver/cqlengine/connections.html

    这允许在不同的键空间和会话中使用单个模型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 2019-08-29
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多