【问题标题】:Define CQLEngine model dynamically using 'type'使用“类型”动态定义 CQLEngine 模型
【发布时间】:2019-03-18 06:45:11
【问题描述】:

我正在使用 Datastax Cassandra python 驱动程序的对象映射器在运行时定义 cassandra 表列(要求与此类似)。 表和列名以及列类型在运行时解析。

我正在尝试在运行时使用“类型”定义一个 cassandra cqlengine 模型来定义一个类。

看起来python驱动程序中定义的模型类已经为模型添加了一个元类

@six.add_metaclass(ModelMetaClass)
类模型(BaseModel):
...

有没有办法使用类型来定义模型? 我在定义模型类时看到以下错误

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

【问题讨论】:

    标签: python cassandra datastax cqlengine datastax-python-driver


    【解决方案1】:

    我将远离其余部分,但要回答有关错误的问题,我认为您在尝试从非序列参数构造元组时遇到了一个简单的语法错误。相反,您可以使用元组文字表示法:

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

    【讨论】:

    • 谢谢你的工作,我相信我回复有点晚了:)
    猜你喜欢
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 2014-05-21
    • 2015-02-11
    • 2021-02-06
    • 1970-01-01
    • 2023-01-03
    • 2012-01-06
    相关资源
    最近更新 更多