【发布时间】: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,如果我的模型将其用作连接,那么如果在应用程序中全局设置它可能没关系。这是建议的方法,还是有更好的方法?
谢谢!
【问题讨论】: