sql >> Databáze >  >> RDS >> Mysql

chyba python mysql v dotazu

za prvé, jak je uvedeno zde:Zkontrolujte platný název sloupce SQL

Pochází z PostGre doc, ale protože PostGre je velmi blízko "ideální" syntaxi SQL, může to být stejné pro mysql... Takže žádné závorky do názvů sloupců, žádné mezery...

A za druhé, Názvy sloupců nejsou řetězce :

Platí následující syntaxe:

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

A následující je neplatný a vyvolá chybu syntaxe:

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

Když použijete modifikátor '%s', analyzuje data jako STRING. takže jej obklopuje uvozovkami, což je neplatné...

Takže pro vytvoření tabulky navrhuji "cyklus for", který ověřuje data (pomocí regexpr) a jednoduše je přidá do řetězce:

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 pak si můžete vytvořit svůj stůl :)




  1. Musím v Oracle vytvářet indexy cizích klíčů?

  2. Může InnoDB použít soubor ignorovaných slov?

  3. Postgres zabraňuje časovému razítku převodem časového pásma

  4. Jak Rails vytváří MySQL příkaz?