Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

क्वेरी में अजगर mysql त्रुटि

सबसे पहले, जैसा कि यहां बताया गया है:वैध SQL कॉलम नाम की जांच करें

यह पोस्टग्रे दस्तावेज़ से आता है, लेकिन चूंकि पोस्टग्रे "आदर्श" एसक्यूएल सिंटैक्स के बहुत करीब है, यह MySQL के लिए समान हो सकता है ... इसलिए कॉलम नामों में कोई कोष्ठक नहीं, कोई रिक्त स्थान नहीं...

और दूसरी बात, कॉलम नाम स्ट्रिंग नहीं हैं :

निम्नलिखित सिंटैक्स मान्य है:

CREATE TABLE (test VARCHAR(100) NOT NULL, ...)

और निम्नलिखित अमान्य है और एक सिंटैक्स त्रुटि फेंक देगा:

CREATE TABLE ('test' VARCHAR(100) NOT NULL, ...)

जब आप '%s' संशोधक का उपयोग करते हैं, तो यह डेटा को STRING के रूप में पार्स करता है। इसलिए यह इसे उद्धरणों से घेरता है, जो अमान्य है...

तो अपनी तालिका बनाने के लिए, मैं एक "लूप के लिए" का सुझाव देता हूं जो डेटा को मान्य करता है (regexpr के साथ), और सहानुभूतिपूर्वक इसे स्ट्रिंग में जोड़ें:

import re
# ...
query = "CREATE TABLE test (ID INT AUTO_INCREMENT,name VARCHAR(50)"
for c in columnames:
        if (re.search(r"^[A-Za-z][A-Za-z0-9_]*$", c) query += c + ", FLOAT" #this regex validate string if  it begins with alphabetic char (upper or lower case), and if the others characters are alphanumeric, or are underscores
        else raise SyntaxError("Invalid Column name!!") #If not, we raise a syntax error
query += ");"

और फिर आप अपनी टेबल बना सकते हैं :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक सरणी के कम से कम एक तत्व वाले परिणाम प्राप्त करने के लिए Laravel क्वेरी?

  2. Mysqli एकाधिक प्रश्नों की अनुमति नहीं देता है?

  3. पीएचपी पीडीओ:वर्णसेट, सेट नाम?

  4. मुझे अपनी MYSQL तालिका/तालिकाओं को कैसे डिज़ाइन करना चाहिए?

  5. 2 टेबल के लिए विदेशी कुंजी कैसे बनाएं?