sql >> Database >  >> RDS >> Mysql

python mysql-fout in query

ten eerste, zoals hier verteld:Controleer op geldige SQL-kolomnaam

Het komt uit het PostGre-document, maar omdat PostGre heel dicht bij de "ideale" SQL-syntaxis ligt, kan het hetzelfde zijn voor mysql... Dus geen haakjes in kolomnamen, geen spaties...

En ten tweede:Kolomnamen zijn geen strings :

De volgende syntaxis is geldig:

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

En de volgende is ongeldig en geeft een syntaxisfout:

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

Als je de '%s'-modifier gebruikt, worden de gegevens geparseerd als STRING. dus het omringt het met aanhalingstekens, wat ongeldig is...

Dus om je tabel te maken, raad ik een "for-lus" aan die gegevens valideert (met regexpr), en deze eenvoudig aan de string toevoegt:

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 += ");"

En dan kun je je tafel maken :)




  1. hoe bereik te berekenen in orakel

  2. Android SQLite werkt de gegevens niet bij

  3. Hoe kan ik de retourwaarde van het Sql Server-systeembericht krijgen?

  4. databasequery om treinen tussen twee stations op een specifieke datum te vinden, zoals irctc.co.in