2017-01-27 3 views
0

Я использую Cassandra в первый раз, но имею опыт создания ORMS в таких библиотеках, как SQLAlchemy. После this page as an example Я настроил свои таблицы, используя cassandra.cqlengine.models.Model класс в качестве базового класса и использовать sync_table, чтобы установить его, например:Как использовать классы модели Cassandra класса Cluster?

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

Если у вас есть только один кластер и пространство ключей, глобальная конфигурация сеанса является самым простым способом.

Для более сложных случаев использования, использовать зарегистрированную функцию соединения, введенную в драйвере 3.7.0: http://www.datastax.com/dev/blog/python-driver-3-7-0-released https://datastax.github.io/python-driver/cqlengine/connections.html

Это позволяет использовать отдельные модели в рамках различных keyspaces и сессий.