Причина вашей ошибки:
player_categories_statistics = cur.fetchone()
Устанавливает player_categories_statistics
в None
. None[0]
выдвигает исключение.
Единственная причина, по которой это произойдет, - ваш запрос не возвращает строк, что означает, что ваша таблица пуста. Ваша таблица, скорее всего, пуста, потому что вы никогда не помещали в нее никаких строк, или менее вероятно, что вы их как-то удалили.
Я виновен Может быть следующим, вы вставляете в sometable
и выбираете из players
:
INSERT INTO sometable (%s) VALUES (%s)
против
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, например. См. Спецификацию количества строк в http://www.python.org/dev/peps/pep-0249/#cursor_objects и обратитесь к документации MySQLdb.