@Elvira15

Возникла ошибка при работе Python и MySQL. Как исправить?

Вот фрагмент кода
db=mysql.connector.connect(
        host="localhost",
        user="root",
        password="hantimirova158",
        port="3306",
        database="Dolphin"
    )

cursor = db.cursor()
#cursor.execute("CREATE DATABASE Dolphin")

#cursor.execute("CREATE TABLE Dolp (bolezn VARCHAR (50), temp ENUM('36-37', '37.1-38', '38.1-39'), poved VARCHAR(20), dykhanie VARCHAR(20), ves VARCHAR(20), pyatna VARCHAR(3), toshnota VARCHAR(3), lechenie VARCHAR(255))");

sql="INSERT INTO Dolp (bolezn, temp, poved, dykhanie, ves, pyatna, toshnota, lechenie) VALUES (%s,%s,%s,%s,%s,%s,%s,%s)"
val=("Отравление", "37.1-38", "Пассивное", "Затрудненное", "Похудел"  "Нет", "Нет", "При отравлении назначаются следующие лекарства")
cursor.execute(sql, val)

db.commit()

print(cursor.rowcount, "запиcь добавлена")


Вот ошибка при выполнении кода
Traceback (most recent call last):
File "C:\Users\Эльвира\AppData\Roaming\Python\Python39\site-packages\mysql\connector\cursor.py", line 82, in __call__
return bytes(self.params[index])
IndexError: tuple index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "D:\4 курс 1 семестр\Курсовая 3\bot2.py", line 24, in
cursor.execute(sql, val)
File "C:\Users\Эльвира\AppData\Roaming\Python\Python39\site-packages\mysql\connector\cursor.py", line 557, in execute
stmt = RE_PY_PARAM.sub(psub, stmt)
File "C:\Users\Эльвира\AppData\Roaming\Python\Python39\site-packages\mysql\connector\cursor.py", line 84, in __call__
raise errors.ProgrammingError(
mysql.connector.errors.ProgrammingError: Not enough parameters for the SQL statement
[Finished in 0.8s]

Не совсем понимаю в чем именно ошибка
  • Вопрос задан
  • 41 просмотр
Решения вопроса 1
@o5a
, "Похудел" "Нет",

Пропущена запятая. Из-за этого оно понимается как один элемент "ПохуделНет" и количество данных в запросе и val не сходится.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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