Причина fetchone()[0]
возвращает None
почти наверняка, что первый столбец в первой строке, соответствующий вашему предложению WHERE
, имеет значение NULL
.
Поскольку вы просто делаете SELECT *
, а не предоставляете список столбцов, первым столбцом может быть любой из столбцов в таблице. Если вам нужна колонка employeeid
, вы должны SELECT employeeid
.
Кроме того, поскольку вы не используете ORDER BY
, первая строка может быть любой из соответствующих строк. Поэтому убедитесь, что не существует нескольких строк, соответствующих вашему предложению WHERE
(если только вы этого не ожидаете). Возможно, у вас есть одна «хорошая» строка со значением 23, плюс другая «плохая» строка со значением NULL
.
Как StefanPochmann указывает, это также возможно, что вы не нашли ни одной строки, и вы неправильно истолкованы результаты. Если запрос ничего не возвращает, вызов fetchone()
либо вернет None
, либо вызовет исключение. В этом первом случае ваше утверждение вызовет ошибку, например TypeError: 'NoneType' object is not subscriptable
, потому что cursor.fetchone()[0]
эффективно делает None[0]
. Во втором случае исключение из fetchone
само по себе может указывать на NoneType
. В любом случае employeeid
заканчивается значением NoneType
, как вы утверждаете, но если вы не смотрите в нужное место, вы могли бы как-то убедить себя, что это так.
Похоже, запрос не возвращает никаких данных , Проверьте rowcount и распечатайте все результаты курсора –
Я искренне сомневаюсь, что он имеет значение 'Nonetype'. Вероятно, он имеет значение 'None', тип которого -' NoneType', который вы видели в некоторой ошибке, которую вы нам не показывали. – abarnert
Во всяком случае, если столбец в базе данных имеет значение SQL 'NULL', а вы' SELECT' его и 'fetch' в Python, то вы получаете' None'. Так что это, вероятно, то, что вы видите. – abarnert