मेरे पास एक अद्वितीय स्ट्रिंग फ़ील्ड और कुछ पूर्णांक फ़ील्ड के साथ डेटाबेस तालिका है। स्ट्रिंग फ़ील्ड आमतौर पर 10-100 वर्ण लंबा होता है।एक टेबल (MySQL, पायथन, Django) में हजारों रिकॉर्ड डालने का सबसे प्रभावी तरीका क्या है
एक बार हर मिनट या तो मेरे पास निम्न परिदृश्य है: मुझे तालिका की रिकॉर्ड संरचना से संबंधित 2-10 हजार टुपल्स की एक सूची प्राप्त होती है, उदा।
[("hello", 3, 4), ("cat", 5, 3), ...]
मैं मेज पर इन सभी tuples डालने की आवश्यकता (मान रहा सत्यापित इन तारों के न डेटाबेस में दिखाई देते हैं)। स्पष्टीकरण के लिए, मैं इनो डीबी का उपयोग कर रहा हूं, और मेरे पास इस तालिका के लिए एक ऑटो-वृद्धिशील प्राथमिक कुंजी है, स्ट्रिंग पीके नहीं है।
मेरे कोड वर्तमान में इस सूची के माध्यम से दोहराता है, प्रत्येक टपल के लिए उपयुक्त मान के साथ एक पायथन मॉड्यूल वस्तु बनाता है, और कहता है ".save()", तो कुछ इस तरह:
@transaction.commit_on_success
def save_data_elements(input_list):
for (s, i1, i2) in input_list:
entry = DataElement(string=s, number1=i1, number2=i2)
entry.save()
इस कोड को वर्तमान में से एक है मेरे सिस्टम में प्रदर्शन बाधाओं का, इसलिए मैं इसे अनुकूलित करने के तरीकों की तलाश में हूं।
उदाहरण के लिए, मैं 100 टुपल्स ("हार्ड-कोडेड" एसक्यूएल में) के लिए एक INSERT कमांड वाले SQL कोड उत्पन्न कर सकता हूं और इसे निष्पादित कर सकता हूं, लेकिन मुझे नहीं पता कि यह कुछ भी सुधार करेगा या नहीं।
क्या आपके पास ऐसी प्रक्रिया को अनुकूलित करने के लिए कोई सुझाव है?
धन्यवाद
अच्छा सवाल! तो, सबसे अच्छा जवाब एक पाठ फ़ाइल बनाने या स्ट्रिंग concatenation के माध्यम से एक एसक्यूएल क्वेरी उत्पन्न करने के लिए प्रतीत होता है? यह थोड़ा असंतुष्ट है! – JAL