Настройте Cassandra DB в django, используя cqlengine, но без использования django-cassandra-engine
Я новичок в Django и разработал 1 приложение, использующее mysql в качестве основной БД, но в моем следующем проекте я должен использовать Cassandra db, используя https://github.com/cqlengine/cqlengine но не использую https://github.com/r4fek/django-cassandra-engine (который является оберткой над cqlengine?).
Я понятия не имею, как начать? Я имею в виду, как и где я должен создать соединение БД, а затем создать модели в файле models.py?
Должен ли я создать соединение в файле init.py? В views.py? что было бы наиболее эффективным способом?
было бы здорово (и для будущих читателей), если бы кто-то представил простую конфигурацию и модель.
2 ответа
Демонстрация twissandra должна стать хорошим примером того, как создать приложение с использованием Cassandra и Django.
В этой реализации нет файла models.py, и соединение поддерживается в файле cass.py.
Вы увидите, что cass.py также содержит все функции, необходимые для возврата данных из базы данных C* и создания объектов, которые используются системой. Здесь вы можете поменять запросы API с помощью кода CqlEngine.
Я надеюсь, что эти ресурсы помогут вам в правильном направлении
Rustyrazorblade демонстрирует простой способ сделать это с помощью своей обучающей ветки CQLEngine ЗДЕСЬ.
Вы можете легко установить соединение, выполнив что-то вроде этого в your_app_project/models/connection.py:
from cqlengine import management
from cqlengine.connection import setup
def connect():
setup(["127.0.0.1", "127.0.1.1", "127.0.1.2"], "tutorial", retry_connect=True)
management.create_keyspace("tutorial", replication_factor=1, strategy_class="SimpleStrategy")
В этом примере: "tutorial" - это пространство ключей, которое мы используем, policy_class - стратегия репликации, используемая вашим экземпляром C*, replication_factor - количество репликаций, которые будут храниться в кольце, 127.0.0.1 - IP-адрес узла кластера Cassandra. (вы можете передать это список или строку), а retry_connect указывает, хотите ли вы, чтобы он попытался повторно подключиться в случае сбоя соединения.
С этого момента начинающим пользователям C* очень легко запутаться. Вы можете вызвать это в любое время, прежде чем синхронизировать таблицы C* или использовать запрос C*.
Итак, вы хотите сделать что-то вроде:
from cqlengine.management import sync_table
from models.connection import connect
from models.somemodels import MyCassandraModel
# This will fire off our previously setup 'connect' method
connect()
# This will setup the Model as a table in your C* DB
sync_table(MyCassandraModel)
Вы даже можете поместить это в manage.py, если только эта установка CQLEngine () выполнена правильно.