2011-11-13 13 views
5

मैं Django में एक एप्लिकेशन पर काम कर रहा हूं। मैं MySQL डीबी में कुछ डेटा संरचना e.g. dictionary स्टोर करने की कोशिश कर रहा हूं। तो मैं पाइथन Pickle मॉड्यूल का उपयोग करता हूं। यह ठीक काम करता है जब मैं इसे pickle.dumps(some_structure) का उपयोग करके डीबी में संग्रहीत करता हूं। मेरा डीबी क्षेत्र longblob मोड binary है।Unpickling त्रुटि अमान्य लोड कुंजी, '{'

लेकिन जब मैं Django में मॉडल वस्तु के क्षेत्र का उपयोग:

obj = someModel.get(pk=1) 
some_structure = obj.field 
content = pickle.loads(some_structure) 

यह त्रुटि निम्न जन्म देती है:

UnpicklingError: invalid load key, '{'. 

कृपया मेरी मदद करो, मैं गूगल की कोशिश की है, लेकिन यह मेरी मदद does'nt , एक समान Question भी है लेकिन यह मेरी समस्या से संबंधित नहीं है क्योंकि मैं डीबी में संग्रहीत कर रहा हूं।

+0

मैं सुझाव दूंगा कि डेटाबेस में इसे स्टोर करने के लिए अपना डेटा चुनना इस बारे में जाने का सही तरीका नहीं है। आपको अपने डेटा को डेटाबेस में सही तरीके से स्टोर करना चाहिए, अपने डेटा को टेबल और फ़ील्ड में बदलना चाहिए। –

+0

डेटा 'जटिल पदानुक्रम (नेस्टेड शब्दकोश) 'में है। मैं इसे टेबल और फ़ील्ड के रूप में सहेज नहीं सकता। डेटा कुछ प्रक्रिया का परिणाम है जिसे बाद में मुझे किसी अन्य 'व्यू' पर django में संसाधित करने की आवश्यकता होती है। –

+1

फिर जेएसओएन शायद अचार की तुलना में बेहतर प्रारूप है। जेएसओएन क्रॉस-प्लेटफॉर्म है, जबकि अचार कार्यान्वयन-विशिष्ट है। –

उत्तर

11

मुझे इस त्रुटि का सामना करना पड़ा और मुझे पता चला कि ऐसा इसलिए था क्योंकि मैंने ऐसा कुछ अनचाहे करने की कोशिश की थी जिसे मूल रूप से नहीं लिया गया था।

अधिक विशेष रूप से, मैंने इसे चुनने के बिना एक पायथन स्कूल को संग्रहीत किया था, जिसके कारण प्रारंभिक चरित्र { था।

इस प्रकार, समस्या को हल करने के लिए, आप की कोशिश करनी चाहिए या तो:

  • डेटास्टोर से पुनर्प्राप्ति पर स्ट्रिंग, या
  • सत्यापन किया जा रहा है कि वस्तुओं डेटासंग्रह में प्रविष्टि करने से पहले मसालेदार किया जा रहा है unpickling नहीं
संबंधित मुद्दे