2012-09-16 31 views
5

Komut dizim python ve cassandra veri stax topluluk sürümü.pycassa TypeError: Bir str veya unicode, cassandra eklentisi yapamaz

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

Bu, bir cassandra sütun ailesine yerleştirmeye çalışırken aldığım hatadır.

kod gibidir: "{: değer anahtarı}"

hata günlük önermektedir:

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)   

görünüyor

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

X şeklindeki basit bir dizidir Burada çok eksik bir şey olmak için buradayım ... bu yüzden buraya uzmanlara sormaya geldim!

+0

kodunuzu örneği eşleşmiyor traceback; Str ("aws"): str ("swf") kısmi satırını görüyorum. –

+0

Katılıyorum, cf.insert() swf, başlık ve açıklama içeriyor. Hata 'swf' izleri olduğundan, onunla ilgili bir sorun olduğunu düşündüm. – yuvrajm

+0

"Değerinizi" iki kez kontrol ettiniz mi? Açıkçası bir şey bir tam sayı değil, bir dize içerir. –

cevap

4

Değerlerinizin sütun aile türünüzle eşleştiğinden emin olun. Görünüşe göre sütun aileniz bir BytesType veya onunla ilişkili bir türü yoktur, bu nedenle pycassa yalnızca dize değerlerini kabul eder. Sen (ikincisi piton 2.7 gerektirir ve üzeri) iç içe bir dict anlayışı içeren bir liste anlayışı ile str için tüm değerleri bağlanabilirler:

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

olacağını düşündüm. Teşekkürler! Budur! Hatalı olan karşılaştırıcı tipti. Onu AciiType olarak değiştirdim ve şimdi çalışıyor. Şimdi onunla ilgili değil, ama ben sorabilir miyim, bir rss beslemesi gibi satırlar eklemeye çalıştığınızda ne karşılaştırıcı tavsiye edersiniz – yuvrajm

+1

Bir UTF8Type sütunu kullanmak gibi uluslararası metin (RSS teslim metin dahil) için . –

İlgili konular