checkSql = 'SELECT userid FROM bs_members WHERE userid = :checkUser'
doesUserExist = False
while True:
doesUserExist = False
newUser.userID = ga.getInput('Enter userID: ', "\w+$")
checkUserID = ds.execute(checkSql,checkUser=newUser.userID)
for row in ds:
if row == checkUserID:
doesUserExist = True
print 'That user name is already in use. Please enter a new username.'
break
if doesUserExist == False:
break
else:
continue
Я использую модуль cx_Oracle
с Python 2.7.Я пытаюсь предложить пользователю ввести идентификатор пользователя.Затем программа проверит, существует ли уже идентификатор пользователя и запрашивает ли он другой идентификатор пользователя.Метод execute - это вспомогательный метод, который использует метод execute из cx_Oracle для взаимодействия с базой данных Oracle.Метод getInput запрашивает у пользователя ввод, который затем проверяется на соответствие регулярному выражению.
Я знаю, что я ошибся, но я полагаю, что цикл while
запускает первое действие, которое выполняется, если пользователю предлагаетсяидентификатор пользователя.Затем userID проверяется по базе данных.Цикл for
запускается и проверяет, совпадает ли строка, возвращаемая ds.execute()
, с идентификатором пользователя, предоставленным пользователем.Если это пользователь сказал использовать другое имя пользователя и break
выходит из цикла for
.Затем оператор if
проверяет, существует ли пользователь, а если нет, прерывает цикл while
.Если нет, то цикл while
повторяется, поэтому пользователю предлагается ввести несуществующий идентификатор пользователя.
Что произойдет, если пользователю будет предложено ввести идентификатор пользователя, тогда ни одна из проверок никогда не будет происходить с пользователеми программа переходит к следующему коду.Что мне здесь не хватает?Я включил ссылку в документы для execute()
.Метод execute в приведенном выше коде является частью следующего вспомогательного метода:
def execute(self, statement, **parameters):
if parameters is None:
self._curs.execute(statement)
else:
self._curs.execute(statement,parameters)
Если мне нужно предоставить больше информации, сообщите мне.
edit: я забыл строку doesUserExist = False
сразу после начала цикла while
, поэтому я добавил это.