Определить модель CQLEngine динамически, используя тип - PullRequest
0 голосов
/ 13 октября 2018

Я использую Object Mapper драйвера Python Datastax Cassandra для определения столбцов таблицы cassandra во время выполнения (требования такие же).Имя таблицы и столбца, а также типы столбцов разрешаются во время выполнения.

Я пытаюсь определить модель cassandra cqlengine во время выполнения, используя тип для определения класса.

Похоже, определен класс моделив драйвере python добавлен метакласс для Model

@six.add_metaclass (ModelMetaClass)
class Model (BaseModel):
...

Есть ли способ определитьМодели, использующие тип?Я вижу следующую ошибку при определении класса Model

from cassandra.cqlengine.models import Model
from cassandra.cqlengine import columns as Columns

attributes_dict = {
    'test_id': Columns.Text(primary_key=True)
    'test_col1': Columns.Text()
}

RunTimeModel = type ('NewModelName', tuple(Model), attributes_dict)


Error:
RunTimeModel = type ('NewModelName', tuple(Model), attributes_dict)
TypeError: 'ModelMetaClass' object is not iterable

1 Ответ

0 голосов
/ 22 октября 2018

Я буду держаться подальше от остальных, но чтобы ответить на вопрос об ошибке, я думаю, что у вас есть простая синтаксическая ошибка, пытающаяся создать кортеж из аргумента, не являющегося последовательностью.Вместо этого вы можете использовать буквенное обозначение кортежа:

RunTimeModel = type ('NewModelName', (Model,), attributes_dict)
...