po pierwsze, jak powiedziano tutaj:Sprawdź poprawną nazwę kolumny SQL
Pochodzi z dokumentacji PostGre, ale ponieważ PostGre jest bardzo zbliżone do "idealnej" składni SQL, może być taka sama dla mysql... Więc bez nawiasów w nazwach kolumn, bez spacji...
Po drugie, Nazwy kolumn nie są ciągami :
Poprawna jest następująca składnia:
CREATE TABLE (test VARCHAR(100) NOT NULL, ...)
A poniższy jest nieprawidłowy i spowoduje błąd składni:
CREATE TABLE ('test' VARCHAR(100) NOT NULL, ...)
Gdy używasz modyfikatora „%s”, analizuje on dane jako STRING. więc otacza go cudzysłowami, co jest nieprawidłowe...
Tak więc do tworzenia tabeli sugeruję "pętlę for", która sprawdza poprawność danych (za pomocą regexpr) i po prostu dodaj ją do ciągu:
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 += ");"
A potem możesz stworzyć swój stół :)