В вашем коде есть две проблемы, первая из которых заключается в том, что вы не меняете запрос внутри вашего l oop и, таким образом, по-прежнему извлекаете данные с исходным именем пользователя.
Вторая проблема заключается в том, что .rowcount
всегда возвращает -1
для SELECT
запросов. Если вы попытались распечатать переменные
>>> cursor.execute("select * from user").rowcount
-1
Из документации :
В соответствии с требованиями Python DB API Spe c, количество строк Атрибут «равен -1, если на курсоре не было выполнено executeXX () или количество строк последней операции не определено интерфейсом».
Сюда входят операторы SELECT
, поскольку мы не можем определить количество строк, произведенных запросом, пока все строки не будут получены.
Это означает, что все SELECT
операторы не будут иметь rowcount
.
Вместо этого вы хотите выполнить .fetchone()
и проверить, не пусто ли это. Если это так, значит, у вас уже есть это имя пользователя в db