MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

psycopg2 सिंटैक्स त्रुटि के साथ कई कथन निष्पादित करने में विफल रहता है

यहां क्या हो रहा है, इसे थोड़ा और स्पष्ट रूप से देखने के लिए हमें उस त्रुटि संदेश को अन-उद्धृत करने का प्रयास करना चाहिए। हम इसे पायथन प्रॉम्प्ट पर कर सकते हैं:

>>> message = 'syntax error at or near """"INSERT INTO dimension (id, name) VALUES (1, E\'A\')""""\nLINE 1: """INSERT INTO dimension (id, name) VALUES (1, E\'A\n ^\n'
>>> print message
syntax error at or near """"INSERT INTO dimension (id, name) VALUES (1, E'A')""""
LINE 1: """INSERT INTO dimension (id, name) VALUES (1, E'A
 ^

आह, बहुत बेहतर।

आम तौर पर, Postgres थोड़ा ^ . का उपयोग करने में सावधानी बरतता है वर्ण को उस पंक्ति में सटीक स्थान पर इंगित करने के लिए जहां वह भ्रमित हो गया था - लेकिन यहां, यह "पंक्ति 1" लेबल के मध्य में इंगित कर रहा है जिसे यह सामने में रखता है उस लाइन से जिसने इसे भ्रमित किया। संभवत:स्टैक ओवरफ़्लो में आपका कट-एंड-पेस्ट एक साथ कई लगातार रिक्त स्थान को ध्वस्त कर देता है, जो तब हो सकता है जब आपका संपादक या ब्राउज़र अप्रिय मूड में हो।

इसलिए मैं यह नहीं बता सकता कि त्रुटि कहाँ हुई है, लेकिन मेरे पास एक बहुत मजबूत अनुमान है:किसी तरह, पायथन ट्रिपल-कोट्स जिसके साथ आप अपने बयान को घेरने की कोशिश कर रहे हैं, वास्तव में पोस्टग्रेज में जा रहे हैं! Postgres प्रांप्ट पर कई मिनट तक खेलने के बाद, केवल जिस तरह से मैं "वाक्यविन्यास त्रुटि" संदेश प्राप्त कर सकता हूं जिसका "लाइन" ट्रिपल कोट्स से शुरू होता है, वास्तव में एसक्यूएल में मैन्युअल रूप से ट्रिपल कोट्स टाइप करना है, जहां वे संबंधित नहीं हैं (चूंकि पोस्टग्रेस ट्रिपल-कोटिंग को नहीं समझता है; यह एक पायथन है सम्मेलन):

$ psql postgres 
Null display is "NULL".
psql (8.4.8)
Type "help" for help.

postgres=# """SELECT 1""";
ERROR:  syntax error at or near """"SELECT 1""""
LINE 1: """SELECT 1""";
        ^

समस्या यह है कि आपके द्वारा प्रदर्शित नमूना कोड के साथ यह त्रुटि असंभव है। इस त्रुटि को प्राप्त करने के लिए, आपको वास्तव में इस तरह से पायथन कोड टाइप करना होगा:

cur.executemany('"""INSERT INTO ddmension(id,name) ..."""', data) 

पायथन स्ट्रिंग के अंदर ट्रिपल-कोट्स प्राप्त करने के अन्य तरीके हैं, लेकिन यह सबसे आसान है। किसी भी मामले में, आपका पोस्टग्रेज त्रुटि संदेश निश्चित रूप से दिखा रहा है कि ट्रिपल कोट्स आपके एसक्यूएल के अंदर आ रहे हैं, इसलिए अपने पायथन कोड को फिर से जांचने का प्रयास करें, और हम आपको यह पता लगाने में मदद करेंगे कि आपके स्ट्रिंग्स के अंदर शाब्दिक उद्धरण चिह्न कैसे घुमावदार हो रहे हैं!


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. खेल के लिए चुनने के लिए डेटाबेस

  2. MongoDB में एक सम्मिलित दस्तावेज़ का _id प्राप्त करें?

  3. MongoDB के साथ वसंत सत्र

  4. फ़ाइल डाउनलोड नोडज ग्रिडफ्स के साथ काम नहीं कर रहा है

  5. स्प्रिंग बूट के साथ MongoDB क्वेरी लॉग करें