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 的模块。我正在尝试提示用户输入用户 ID。然后程序将检查用户 ID 是否已经存在以及是否提示用户输入不同的用户 ID。execute 方法是一个辅助方法,它使用 cx_Oracle 中的 execute 方法与 Oracle 数据库进行交互。getInput 方法提示用户输入,然后根据正则表达式进行检查。
我知道我有这个错误,但我相信while
循环开始执行的第一个操作是提示用户输入用户 ID。然后根据数据库检查用户 ID。for
循环开始并检查返回的行是否ds.execute()
与用户提供的 userID 相同。如果是,用户被告知使用另一个用户名并break
退出for
循环。该if
语句然后检查用户是否存在,如果不存在则中断while
循环。如果不是,则while
循环迭代,因此提示用户输入不存在的用户 ID。
发生的情况是提示用户输入用户 ID,然后用户似乎没有进行任何检查,程序继续执行下一段代码。我在这里想念什么?我已经包含了一个指向文档的链接execute()
。上述代码中的 execute 方法是以下辅助方法的一部分:
def execute(self, statement, **parameters):
if parameters is None:
self._curs.execute(statement)
else:
self._curs.execute(statement,parameters)
如果我需要提供更多信息,请告诉我。
编辑:我在循环doesUserExist = False
开始后立即忘记了该行,所以我添加了该行。while