TypeError:使用一组UDT创建Cassandra Python驱动程序模型时的不可用类型UserType

时间:2016-05-03 17:59:58

标签: python cassandra datastax

此问题与Datastax Cassandra python驱动程序的对象映射程序有关。 尝试使用" Set"创建模型时UDT作为一个字段,我收到错误: TypeError:不可用类型:' [UdtClassName]'

但是,我能够使用一组基本类型(例如Text)或带有UDT列表的模型创建一个模型。

请注意,这个问题似乎只存在于对象映射器中,因为我能够使用CQL查询在Cassandra中创建一组UDT。

之前有人遇到过这个问题吗?有人有建议吗?

我正在运行cassandra python驱动程序3.2.2,使用python 3.4.4

2 个答案:

答案 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。