首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pycassa TypeError:字符串或unicode,无法执行cassandra插入

pycassa TypeError:字符串或unicode,无法执行cassandra插入
EN

Stack Overflow用户
提问于 2012-09-16 18:05:25
回答 1查看 1.3K关注 0票数 5

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

代码语言:javascript
复制
TypeError: A str or unicode value was expected, but int was received instead (3902503)

这是我在尝试插入到cassandra柱族时遇到的错误。

代码如下:

代码语言:javascript
复制
for x in feed:
    cf.insert(uuid.uuid4(), x)

X是一个简单的数组,形式为"{key:value}“

错误日志显示:

代码语言:javascript
复制
    Traceback (most recent call last):
      File "C:\Users\me\Desktop\pro1\src\pro1.py", line 73, in <module>
        str("swf"): str("aws")
      File "c:\Python27\lib\site-packages\pycassa\columnfamily.py", line 969, in insert
        mut_list = self._make_mutation_list(columns, timestamp, ttl)
      File "c:\Python27\lib\site-packages\pycassa\columnfamily.py", line 504, in _make_mutation_list
        columns.iteritems())
      File "c:\Python27\lib\site-packages\pycassa\columnfamily.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:\Python27\lib\site-packages\pycassa\columnfamily.py", line 462, in _pack_value
        return packer(value)
      File "c:\Python27\lib\site-packages\pycassa\marshal.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)        

我似乎错过了一件很重要的事情...这就是我来这里请教专家的原因!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-16 18:32:38

确保您的值与列族类型相匹配。看起来您的列族要么是一个BytesType,要么没有与之关联的类型,因此pycassa将只接受字符串值。您可以将所有值映射到带有嵌套字典理解的列表理解的str中(后者需要Python2.7或更高版本):

代码语言:javascript
复制
cf.insert(uuid.uuid4(), [{k: str(v) for k, v in d.iteritems()} for d in x])
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12446033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档