此问题与Datastax Cassandra python驱动程序的对象映射程序有关。 尝试使用" Set"创建模型时UDT作为一个字段,我收到错误: TypeError:不可用类型:' [UdtClassName]'
但是,我能够使用一组基本类型(例如Text)或带有UDT列表的模型创建一个模型。
请注意,这个问题似乎只存在于对象映射器中,因为我能够使用CQL查询在Cassandra中创建一组UDT。
之前有人遇到过这个问题吗?有人有建议吗?
我正在运行cassandra python驱动程序3.2.2,使用python 3.4.4
答案 0 :(得分:1)
这在Cassandra中是可能的(并直接使用核心驱动程序),但cqlengine映射器目前不支持它。原因是传统的API限制,其中映射器规范化为集合和映射的基本python类型。因此,API对集元素和映射键具有相同的可持续性要求。
我们打开了一张票here,但它需要等待下一个主要版本,因为它意味着API的更改。
您可以尝试通过在UDT模型类上提供哈希来解决此问题(如果有意义的话)。
答案 1 :(得分:0)
从Adam扩展,在UserType上使用哈希
class Client(UserType):
mac = columns.Text()
rx = columns.Integer()
tx = columns.Integer()
def __hash__(self):
return hash((self.mac, self.rx, self.tx))
谢谢Adam。