pertama, seperti yang diceritakan di sini:Periksa nama kolom SQL yang valid
Itu berasal dari PostGre doc, tetapi karena PostGre sangat dekat dengan sintaks SQL "ideal", itu mungkin sama untuk mysql... Jadi tidak ada tanda kurung pada nama kolom, tanpa spasi...
Dan kedua, Nama kolom bukan string :
Sintaks berikut ini valid:
CREATE TABLE (test VARCHAR(100) NOT NULL, ...)
Dan yang berikut ini tidak valid dan akan menimbulkan kesalahan sintaks:
CREATE TABLE ('test' VARCHAR(100) NOT NULL, ...)
Saat Anda menggunakan pengubah '%s', pengubah mem-parsing data sebagai STRING. jadi itu mengelilinginya dengan tanda kutip, yang tidak valid...
Jadi untuk membuat tabel Anda, saya sarankan "for loop" yang memvalidasi data (dengan regexpr), dan cukup tambahkan ke string:
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 += ");"
Dan kemudian Anda dapat membuat tabel Anda :)