如何将 Cassandra 模型 classes 与集群 class 一起使用?
How to use Cassandra Model classes with the Cluster class?
我是第一次使用 Cassandra,但有在 SQLAlchemy 等库中设置 ORMS 的经验。在 this page as an example 之后,我使用 cassandra.cqlengine.models.Model
class 作为基础 class 设置了我的表格,并使用 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 我很担心,如果我的模型将使用它作为连接,那么如果它在整个应用程序中全局设置就可以了。这是建议的方法,还是有更好的方法?
谢谢!
如果您只有一个集群和键空间,全局会话配置是最简单的方法。
对于更复杂的用例,请使用驱动程序 3.7.0 中引入的注册连接功能:
http://www.datastax.com/dev/blog/python-driver-3-7-0-released
https://datastax.github.io/python-driver/cqlengine/connections.html
这允许在不同的键空间和会话中使用单个模型。
我是第一次使用 Cassandra,但有在 SQLAlchemy 等库中设置 ORMS 的经验。在 this page as an example 之后,我使用 cassandra.cqlengine.models.Model
class 作为基础 class 设置了我的表格,并使用 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 我很担心,如果我的模型将使用它作为连接,那么如果它在整个应用程序中全局设置就可以了。这是建议的方法,还是有更好的方法?
谢谢!
如果您只有一个集群和键空间,全局会话配置是最简单的方法。
对于更复杂的用例,请使用驱动程序 3.7.0 中引入的注册连接功能: http://www.datastax.com/dev/blog/python-driver-3-7-0-released https://datastax.github.io/python-driver/cqlengine/connections.html
这允许在不同的键空间和会话中使用单个模型。