我第一次使用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)
由于我只有一个数据库/密钥空间/等我担心,如果它在整个应用程序中全局设置,如果我的模型将其用作连接,那么它可以。这是建议的方法,还是有更好的方法呢?
谢谢!
答案 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
这允许在不同的键空间和会话中使用单个模型。