2017-05-03 27 views
1

我最近刚开始卡桑德拉分贝蟒蛇工作3卡桑德拉蟒蛇司机ORM崩溃时模型包含设置UDT

我有一个模型女巫包含了一组用户定义类型:

# model.py 
import uuid 

from datetime import datetime 
from cassandra.cqlengine import columns 
from cassandra.cqlengine.models import Model 
from cassandra.cqlengine.usertype import UserType 

class Hobby(UserType): 
    priority = columns.Integer() 
    hobby = columns.Text() 

    def __hash__(self): 
     return hash(str(self.__class__) + ": " + str(self.__dict__)) 


class Person(Model): 
    __keyspace__ = 'tracking' 

    id = columns.UUID(primary_key=True, default=uuid.uuid4) 
    birth_date = columns.DateTime(default=datetime.now()) 
    hobbies = columns.Set(columns.UserDefinedType(Hobby)) 

文件我有看起来像这样的测试:现在

#main.py 
from settings import auth_provider 
from models import * 

from cassandra.cqlengine import connection 
from cassandra.cqlengine.management import sync_table, sync_type 

connection.setup(['127.0.0.1'], 'tracking', auth_provider=auth_provider, protocol_version=3) 
sync_type('tracking', Hobby) 
sync_table(Person) 

Person.create(hobbies=[Hobby(priority=1, hobby='Coding'), ]) 
# Person.create(hobbies=[Hobby(priority=1, hobby='Coding'), Hobby(priority=2, hobby='Testing')]) 

for i in Person.objects().all(): 
    print(dict(i)) 

,如果我用第Person.create有一个爱好,数据刚读˚F国家统计局。

不过,如果我使用第二个(注释掉)Person.create有两个爱好,我收到以下异常:

cassandra.DriverException: Failed decoding result column "hobbies" of type set<frozen<hobby>>: '<' not supported between instances of 'Hobby' and 'Hobby' 

寻求解决方法的任何建议,我在做对吗?

回答

1

好了,所以我居然花了这么多时间读书,我没有尝试明显的文档,改变了爱好的人模型类型列表,而不是设置。

hobbies = columns.List(columns.UserDefinedType(Hobby))解决了这个问题。