MySQL соединитель в python: вставьте ошибку строки - PullRequest
0 голосов
/ 06 июня 2018

У меня есть таблица "персон" в базе данных "testdb".При выполнении следующего в командной строке mysql появляется следующее:

SELECT * FROM persons;
+----------+----------+-----------+----------------+-------------+
| PersonID | LastName | FirstName | Address        | City        |
+----------+----------+-----------+----------------+-------------+
|        1 | Angelil  | Oliver    | Farbstrasse    | Zurich      |
|        2 | Herger   | Nadja     | schoggistrasse | Unteraegeri |
|        3 | Kopparla | Pushkar   | shortstreet    | Banglore    |
|        4 | Herger   | Michael   | bananastreet   | cambridge   |
+----------+----------+-----------+----------------+-------------+

Если я хочу вставить новую строку, я бы использовал:

INSERT INTO persons
  VALUES (5, 'Smith', 'John', 'longstreet', 'Paris');

Я сейчас хочу сделатьто же самое в Python с:

import mysql.connector
cnx = mysql.connector.connect(user='elephant', password='password',
                              host='zoo.ddns.net',
                              database='testdb')

cursor = cnx.cursor()
insert = ("INSERT INTO persons"
                "VALUES (5, 'Smith', 'John', 'longstreet', 'Paris')")

cursor.execute(insert)
cnx.close()

Но я получаю ошибку:

mysql.connector.errors.ProgrammingError: 1064 (42000): у вас есть ошибка вваш синтаксис SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса, чтобы использовать около '5,' Smith ',' John ',' longstreet ',' Paris ')' в строке 1

Otherтакие команды, как следующие, работают, поэтому с настройками соединения это не проблема:

query = ("SELECT * FROM persons")
cursor.execute(query)
result = cursor.fetchall()
...