यह पूरी तरह से हैरान करने वाली बात नहीं है। पहले उदाहरण में आप अजगर पूर्वनिर्धारित स्थिरांक सम्मिलित कर रहे हैं None
यह SQL NULL
. के बराबर है . दूसरे उदाहरण में आप तालिका में 'कोई नहीं' नामक एक स्ट्रिंग सम्मिलित कर रहे हैं। ये दोनों बहुत अलग हैं। यदि आप डबल या फ़्लोट फ़ील्ड में एक स्ट्रिंग सम्मिलित करते हैं तो आपको सभी प्रकार की त्रुटियां दिखाई देंगी, सबसे अधिक बार, ठीक वही जो आपने देखी है।
पहली बार में यह काम करता है क्योंकि आपने घोषित किया है:
`float8value` double DEFAULT NULL,
यह NULL को स्वीकार करता है और कोई भी आपकी मान सूची में 8वें स्थान पर नहीं है। जब कई अलग-अलग पैरामीटर का उपयोग किया जा रहा हो, तो नामित पैरामीटर का उपयोग करना हमेशा एक अच्छा विचार होता है ताकि एक नज़र में यह स्पष्ट हो कि प्रत्येक कॉलम के लिए क्या बाध्य किया जा रहा है।
अपडेट:
अपना कोड चलाने के बाद, केवल एक ही निष्कर्ष पर पहुंचा जा सकता है कि आपको print(cursor.statement)
का उपयोग करके बग मिल गया है। यह पता लगाना संभव है कि निष्पादित क्वेरी है।
INSERT INTO runsettings (apcrunid,equipment,runnumber,wafer,settingname,intvalue,floatvalue,float8value)
VALUES (471285,'CT19',7,'271042','Etch Time Min',NULL,NULL,NULL),
(471285,'CT19',7,'00000','Etch Time Min',NULL,NULL,'None')
यह कोई त्रुटि उत्पन्न नहीं करता है, लेकिन यदि आप मानों के पहले सेट को मिटा देते हैं तो त्रुटि वास्तव में उत्पन्न होती है। मेरा सुझाव है कि एक बग रिपोर्ट दर्ज करें