Python asynchronous — как исправить ошибку?

Есть простой сервер, который принимает данные от клиента, и в зависимости от того, какую строку получает, выполняет разные действия ( ссылка на pastebin ).
Свои функции сервер выполняет, но при любом обращении к нему пишет в консоль :
error: uncaptured python exception, closing channel <__main__.EchoHandler 37.55.139.97:50573 at 0xb738bc4c> (:tuple index out of range [/usr/lib/python3.3/asyncore.py|read|83] [/usr/lib/python3.3/asyncore.py|handle_read_event|441] [./srv.py|handle_read|19])


Что, собственно, это значит, и как от этого избавиться?
  • Вопрос задан
  • 2611 просмотров
Решения вопроса 2
adugin
@adugin Куратор тега Python
Написано: tuple index out of range
Обратились к кортежу по индексу, которого в нём не существует.
Скорее всего где-то здесь:

setData = querry.split(' ')
setQuerry = tuple(setData)
querrySet = (setQuerry[0],setQuerry[1],setQuerry[2],setQuerry[3],setQuerry[4])

Что делать?
1) Бить линейкой по рукам, пока не научитесь проверять необходимые условия.
2) Изучить синтаксис Питона и стандартную библиотеку, чтобы не писать такой говнокод, как в трёх строках выше.
Ответ написан
Комментировать
adugin
@adugin Куратор тега Python
if querry:
    dataset = querry.split()
    if len(dataset) >= 5:
        with sqlite3.connect('aybremote') as connection:
            cursor = connection.cursor()
            cursor.execute('INSERT INTO main VALUES(?,?,?,?,?)', dataset[0:5])
            connection.commit()

И это пока ещё без проверки типа данных, которые вставляете.

P.S. "Query" пишется с одной "r"
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы