Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Błąd mysql Pythona w zapytaniu

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ół :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 5 sposobów na sprawdzenie, czy tabela istnieje w MySQL

  2. Spójna losowa kolejność w zapytaniu MySQL

  3. Tworzenie tabeli tymczasowej MySQL, a następnie przypisywanie z niej CRUD

  4. Wyszukiwanie MySQL w celu zignorowania myślników

  5. Jak stworzyć moduł Nadchodzące urodziny w Railsach?