Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

erro python mysql na consulta


em primeiro lugar, como dito aqui:Verifique se há um nome de coluna SQL válido

Ele vem do documento PostGre, mas como o PostGre está muito próximo da sintaxe SQL "ideal", pode ser o mesmo para o mysql ... Portanto, sem parênteses nos nomes das colunas, sem espaços ...

E em segundo lugar, Os nomes das colunas não são strings :

A seguinte sintaxe é válida:
CREATE TABLE (test VARCHAR(100) NOT NULL, ...)

E o seguinte é inválido e lançará um erro de sintaxe:
CREATE TABLE ('test' VARCHAR(100) NOT NULL, ...)

Quando você usa o modificador '%s', ele analisa os dados como STRING. então ele o cerca com aspas, o que é inválido ...

Então, para criar sua tabela, sugiro um "for loop" que valida os dados (com regexpr) e simplesmente adicione-o à 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 += ");"

E então você pode criar sua tabela :)