Приложение Python Flask: TypeError: объект «NoneType» не является индексируемым [duplicate]

Вы используете объект, содержащий ссылку нулевого значения. Таким образом, он дает пустое исключение. В примере строковое значение равно null, и при проверке его длины произошло исключение.

Пример:

string value = null;
if (value.Length == 0) // <-- Causes exception
{
    Console.WriteLine(value); // <-- Never reached
}

Ошибка исключения:

Необработанное исключение:

System.NullReferenceException: ссылка на объект не установлена ​​в экземпляр объекта. в Program.Main ()

1
задан shodanex 6 December 2011 в 16:06
поделиться

1 ответ

Причина вашей ошибки:

player_categories_statistics = cur.fetchone()

Это устанавливает player_categories_statistics в None. None[0] вызывает исключение.

Единственная причина, по которой это произойдет, - это ваш запрос не возвращает строк, что означает, что ваша таблица пуста. Ваша таблица, скорее всего, пуста, потому что вы никогда не помещаете в нее никаких строк или, что менее вероятно, вы их каким-то образом удалили.

Я могу быть следующим: вы вставляете в sometable и выбираете из players:

INSERT INTO sometable (%s) VALUES (%s)

vs

SELECT %s FROM players

Единственная причина, по которой это возможно, состоит в том, что вы заставляете ее зацикливаться, даже если ничего не было возвращено в строке:

rowcount = 2 #hard-coded for debugging

Дополнительная информация:

Вот рабочий запрос, который я запускал в базе данных sqlite3 с одной таблицей с одной строкой с почти идентичными утверждениями, такими как ваши, чтобы показать, что ваш работая, если данные действительно существуют.

query = "SELECT %s FROM customer" % 'first_name, last_name'

row = c.execute("%s" % (query)).fetchone()

row
Out[28]: (u'Derek', u'Litz')

Вот еще один рабочий запрос в базе данных sqlite3 с другой таблицей и без строк.

query = "SELECT %s FROM customer2" % 'first_name, last_name'

print c.execute("%s" % (query)).fetchone()
None

Как вы можете видеть, поведение выше.

Также убедитесь, что rowcount работает так, как вы хотите, с вашей БД. Например, это не с sqlite3. См. Спецификацию rowcount в http://www.python.org/dev/peps/pep-0249/#cursor_objects и обратитесь к документации MySQLdb.

2
ответ дан Derek Litz 25 August 2018 в 19:23
поделиться
Другие вопросы по тегам:

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