Mysql
 sql >> база данни >  >> RDS >> Mysql

python mysql грешка в заявката

първо, както е казано тук:Проверете за валидно име на 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 += ");"

И тогава можете да създадете своя таблица :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php/mysql. Има ли mysql функция, която да открие дали съществуват поне 2 определени думи в поне едно поле-ред на mysql

  2. Sql Обединяване на множество записи в един запис

  3. Virtualmin:Нямате достъп до тази MySQL база данни след промяна на паролата

  4. PHP/MySQL библиотека за отчитане

  5. актуализация на mysql - пропускане на празни полета?