pycassa TypeError: A str 或 unicode,无法执行 cassandra 插入



我的脚本是python,cassandra是data stax社区版。

TypeError: A str or unicode value was expected, but int was received instead (3902503)

这是我在尝试插入 Cassandra 列系列时遇到的错误。

代码是这样的:

for x in feed:
    cf.insert(uuid.uuid4(), x)

x 是 "{key:value}" 形式的简单数组

错误日志建议:

    Traceback (most recent call last):
      File "C:UsersmeDesktoppro1srcpro1.py", line 73, in <module>
        str("swf"): str("aws")
      File "c:Python27libsite-packagespycassacolumnfamily.py", line 969, in insert
        mut_list = self._make_mutation_list(columns, timestamp, ttl)
      File "c:Python27libsite-packagespycassacolumnfamily.py", line 504, in _make_mutation_list
        columns.iteritems())
      File "c:Python27libsite-packagespycassacolumnfamily.py", line 503, in <lambda>
        return map(lambda (c, v): Mutation(self._make_cosc(_pack_name(c), _pack_value(v, c), timestamp, ttl)),
      File "c:Python27libsite-packagespycassacolumnfamily.py", line 462, in _pack_value
        return packer(value)
      File "c:Python27libsite-packagespycassamarshal.py", line 231, in pack_bytes
        % (v.__class__.__name__, str(v)))
    TypeError: A str or unicode value was expected, but int was received instead (3902503)        

我在这里似乎错过了一些非常微小的东西......好吧,这就是我来这里请专家的原因!

确保您的值与您的列系列类型匹配。看起来您的列系列要么是 BytesType,要么没有与之关联的类型,因此 pycassa 只接受字符串值。您可以使用带有嵌套字典推导的列表推导将所有值映射到str(后者需要 python 2.7 及更高版本):

cf.insert(uuid.uuid4(), [{k: str(v) for k, v in d.iteritems()} for d in x])

最新更新