Вы используете объект, содержащий ссылку нулевого значения. Таким образом, он дает пустое исключение. В примере строковое значение равно null, и при проверке его длины произошло исключение.
Пример:
string value = null;
if (value.Length == 0) // <-- Causes exception
{
Console.WriteLine(value); // <-- Never reached
}
Ошибка исключения:
Необработанное исключение:
System.NullReferenceException: ссылка на объект не установлена в экземпляр объекта. в Program.Main ()
blockquote>
Причина вашей ошибки:
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.