मेरे पास एक पायथन प्रोग्राम है जो "थ्रेडिंग" मॉड्यूल का उपयोग करता है। प्रत्येक सेकंड में एक बार, मेरा प्रोग्राम एक नया सूत्र शुरू करता है जो वेब से कुछ डेटा प्राप्त करता है, और इस डेटा को मेरी हार्ड ड्राइव में संग्रहीत करता है। मैं इन परिणामों को संग्रहीत करने के लिए sqlite3 का उपयोग करना चाहूंगा, लेकिन मुझे यह काम करने के लिए नहीं मिल सकता है। समस्या निम्न पंक्ति के बारे में प्रतीत होती है:
conn = sqlite3.connect("mydatabase.db")
- यदि मैं प्रत्येक थ्रेड के अंदर कोड की यह लाइन डालता हूं, तो मुझे एक ऑपरेशनलError मिलती है जो मुझे बताती है कि डेटाबेस फ़ाइल लॉक है। मुझे लगता है कि इसका मतलब यह है कि एक अन्य धागे में एक sqlite3 कनेक्शन के माध्यम से mydatabase.db खुला है और इसे लॉक कर दिया है।
- यदि मैं मुख्य प्रोग्राम में कोड की यह लाइन डालता हूं और प्रत्येक थ्रेड के लिए कनेक्शन ऑब्जेक्ट (कॉन) पास करता हूं, तो मुझे एक ProgrammingError मिलती है, जिसमें कहा गया है कि किसी थ्रेड में बनाई गई SQLite ऑब्जेक्ट केवल उसी थ्रेड में उपयोग की जा सकती है।
पहले मैं अपने सभी परिणाम CSV फ़ाइलों में संग्रहीत कर रहा था, और इनमें से कोई भी फ़ाइल-लॉकिंग समस्या नहीं थी। उम्मीद है कि यह साइक्लाइट के साथ संभव होगा। कोई विचार?