【发布时间】:2012-09-16 10:05:24
【问题描述】:
我的脚本是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:\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)
我在这里似乎很想念一些东西......好吧,这就是我来这里咨询专家的原因!
【问题讨论】:
-
您的回溯与您的代码示例不匹配;我看到
str("swf"): str("aws")的部分行。 -
我同意,cf.insert() 包含 swf、标题和描述。由于错误追溯到“swf”,我认为它有问题。
-
您是否仔细检查了您的
values?显然某些东西包含一个整数,而不是一个字符串。 -
有什么方法可以将此 int 转换为 str?我认为 str() 会帮助
标签: python string error-handling cassandra pycassa