I'm trying to use a while
loop to iterate through a function in Python which requests a user input, i.e. commitchanges
to perform one of two actions, and if the input is not valid after a few attempts to close the program.
If the input is equal to 'y' (Yes) then the program should commit the changes made by the SQL update query, i.e. conn.commit()
If the input is equal to 'n' (No) then the program should not commit the changes and rollback, i.e. conn.rollback()
If the input is anything other than 'y' or 'n' then the program should alert the user that that is not a valid input.
Here's my current function:
def action(inputattempts):
commitchanges = input()
if commitchanges.lower() == 'y':
try:
conn.commit()
print ('Table Updated. No. of records updated:', totalupdates)
except cx_Oracle.DatabaseError as error:
print(error)
elif commitchanges.lower() == 'n':
conn.rollback()
print ('Rollback - No updates made to table')
else:
print ('Not a valid selection - Try again')
print (inputattempts)
Where the variable totalupdates
is a global variable defined later on in the program which counts the number of records affected by the curs.execute
SQL query.
I'm then calling the above function in a while
loop as follows:
inputattempts = 0
while (inputattempts < 4):
inputattempts += 1
action(inputattempts)
print ('FAILED')
Essentially, I'd like the user to have a maximum of 4 attempts at entering a valid input, i.e. 'y' or 'n' before the program aborts if the input is not valid after those attempts. However, if 'y' or 'n' is entered the first time the function is called the program should either commit
or rollback
and exit the loop.
Currently, I'm having to complete 4 iterations of the while
loop regardless of my input. Is there a way I can tweak any of that syntax to exit the loop when the above conditions are met?