sql >> Database teknologi >  >> RDS >> Mysql

python mysql fejl i forespørgsel

for det første, som fortalt her :Kontroller for gyldigt SQL-kolonnenavn

Det kommer fra PostGre doc, men fordi PostGre er meget tæt på den "ideelle" SQL-syntaks, kan det være det samme for mysql... Så ingen parentes i kolonnenavne, ingen mellemrum...

Og for det andet, Kolonnenavne er ikke strenge :

Følgende syntaks er gyldig:

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

Og den følgende er ugyldig og vil give en syntaksfejl:

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

Når du bruger "%s"-modifikatoren, analyserer den data som STRING. så det omgiver det med anførselstegn, hvilket er ugyldigt...

Så for at oprette din tabel, foreslår jeg en "for loop", som validerer data (med regexpr), og blot tilføjer dem til strengen:

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

Og så kan du lave dit bord :)




  1. Tæl tabelrækker

  2. kubernetes timescaledb statefulset:Ændringer tabt på pod-rekreation

  3. Hvordan kører man mysql-kommandoer fra terminal på en MAMP-installation?

  4. Træk dage fra en dato i PostgreSQL