如何在Cluster类中使用Cassandra Model类?

时间:2017-01-27 01:36:37

标签: python cassandra datastax

我第一次使用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)

由于我只有一个数据库/密钥空间/等我担心,如果它在整个应用程序中全局设置,如果我的模型将其用作连接,那么它可以。这是建议的方法,还是有更好的方法呢?

谢谢!

1 个答案:

答案 0 :(得分: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

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