maxkyl
@maxkyl
Учусь програмировать на Python

Python+Mysql возникает ошибка?

При использовании запроса INSERT необходимо добавить какие-нибудь данные в таблицу log
>>> _SQL = """inser into log
...            (phrase, letters, ip, browser_string, results)
...            values
...            ('hitch-hiker', 'aeiou', '127.0.0.1', 'Firfox', "{'e', 'i'})"""
>>> cursor.execute(_SQL)

Выдаёт ошибку:
Traceback (most recent call last):
File "", line 1, in
File "C:\Users\Максим\AppData\Local\Programs\Python\Python37-32\lib\site-packa
ges\mysql\connector\cursor.py", line 569, in execute
self._handle_result(self._connection.cmd_query(stmt))
File "C:\Users\Максим\AppData\Local\Programs\Python\Python37-32\lib\site-packa
ges\mysql\connector\connection.py", line 590, in cmd_query
result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
File "C:\Users\Максим\AppData\Local\Programs\Python\Python37-32\lib\site-packa
ges\mysql\connector\connection.py", line 478, in _handle_result
raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your
SQL syntax; check the manual that corresponds to your MySQL server version for
the right syntax to use near ',Firefox', "{'e', 'i'}")' at line 4


В начале выполнялись следующие действия и всё работало.
>>> dbconfig = {'host': '127.0.0.1',
...            'user': 'vsearch',
...            'password': 'vsearchpasswd',
...            'database': 'vsearchlogdb',}
import mysql.connector
>>> conn = mysql.connector.connect(**dbconfig)
>>> cursor = conn.cursor()
>>> _SQL = """show tables"""
>>> cursor.execute(_SQL)
>>> res = cursor.fetchall()
>>> res
[('log',)]
>>> _SQL = """describe log"""
>>> cursor.execute(_SQL)
>>> res = cursor.fetchall()
>>> res
[('id', 'int(11)', 'NO', 'PRI', None, 'auto_increment'), ('ts', 'timestamp', 'YE
S', '', 'CURRENT_TIMESTAMP', ''), ('phrase', 'varchar(128)', 'NO', '', None, '')
, ('letters', 'varchar(32)', 'NO', '', None, ''), ('ip', 'varchar(16)', 'NO', ''
, None, ''), ('browser_string', 'varchar(256)', 'NO', '', None, ''), ('results',
 'varchar(64)', 'NO', '', None, '')]

Не могу понять в чом дело? Заранее спасибо за любую помощь!!!
  • Вопрос задан
  • 392 просмотра
Пригласить эксперта
Ответы на вопрос 3
@gh0sty
Веб-разработчик. Пишу под Python Django.
У тебя выше не тот запрос показан. inser и Firfox
Но так пишет - проверь синтакс для
,Firefox', "{'e', 'i'}")

Може запятую, кавычки где потерял, экранирование какое-нибудь. Вставляй значения по-нормальному, через f или format.
Ответ написан
Комментировать
@AAzimus
Учусь прогромировать
Для всех читателей книги запрос будет выглядеть так

>>> ___SQL = ("INSERT INTO log "
"(phrase,letters,ip,browser_string,results) "
"VALUES ('hitch-kiker','aeiou','127.0.0.1','Firefox','{e,i}')")
>>> cursor.execute(___SQL)
>>>
Ответ написан
Комментировать
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Смотрите внимательнее:
"""inser into log
    (phrase, letters, ip, browser_string, results)
    values
    ('hitch-hiker', 'aeiou', '127.0.0.1', 'Firfox', "{'e', 'i'})"""

Используются тройные кавычки. СПрячем их для ясности:
inser into log
    (phrase, letters, ip, browser_string, results)
    values
    ('hitch-hiker', 'aeiou', '127.0.0.1', 'Firfox', "{'e', 'i'})

что видим? у вас непарная двойная кавычка перед фигурной скобкой.
Именно об этом вам "намекал" парсер SQL выдавая исключение и указывая на конкртеное место проблемы. Внимательно смотрите и увидите.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы