sql >> Databasteknik >  >> RDS >> Mysql

python mysql-fel i fråga

För det första, som sagt här :Kontrollera efter giltigt SQL-kolumnnamn

Det kommer från PostGre doc, men eftersom PostGre är väldigt nära den "ideala" SQL-syntaxen, kan det vara samma sak för mysql... Så ingen parentes i kolumnnamn, inga mellanslag...

Och för det andra, Kolumnnamn är inte strängar :

Följande syntax är giltig:

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

Och följande är ogiltig och kommer att ge ett syntaxfel:

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

När du använder modifieraren '%s' analyserar den data som STRING. så den omger den med citattecken, vilket är ogiltigt...

Så för att skapa din tabell föreslår jag en "for loop" som validerar data (med regexpr), och helt enkelt lägger till den i strängen:

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

Och sedan kan du skapa ditt bord :)




  1. Kan inte ansluta till den lokala MySQL-servern via sockeln '/var/lib/mysql/mysql.sock' (2)

  2. DB design:medlemmar tabell separat eller alla i en tabell?

  3. Spring app tappar anslutningen till MySql efter 8 timmar. Hur konfigurerar man korrekt?

  4. asp.net / MySQL:Åtkomst nekad för användare ''@'localhost' (med lösenord:NO)