първо, както е казано тук:Проверете за валидно име на SQL колона
Идва от PostGre doc, но тъй като PostGre е много близък до „идеалния“ SQL синтаксис, може да е същият за mysql... Така че без скоби в имената на колоните, без интервали...
И второ, Имената на колоните не са низове :
Следният синтаксис е валиден:
CREATE TABLE (test VARCHAR(100) NOT NULL, ...)
И следният е невалиден и ще изведе синтактична грешка:
CREATE TABLE ('test' VARCHAR(100) NOT NULL, ...)
Когато използвате модификатора „%s“, той анализира данните като STRING. така че го обгражда с кавички, което е невалидно...
Така че, за да създадете вашата таблица, предлагам "for цикъл", който валидира данните (с 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 += ");"
И тогава можете да създадете своя таблица :)