Display List for User Input - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Display List for User Input (/thread-9111.html) |
Display List for User Input - anelliaf - Mar-21-2018 Hello, I'm trying to display a list of databases to a user and have them make a selection based on number. Once the selection is made, I'd like to construct a connection string from their input. So far, I have basic code to have the user connect but I'm unable to take their database input and construct and append it to the connection string. import cx_Oracle import getpass # Database List db_list = ['TEST11C', 'TEST12C'] x = 0 print ('\nChoose a database: ') for i in db_list: x += 1 print(x, i) while True: try: # Input username and password uname = input('\nEnter username: ') pw = getpass.getpass(prompt='Enter password: ') conn_str = u'%s/%s@<DATABASE>' % (uname, pw) conn = cx_Oracle.connect(conn_str) c = conn.cursor() break except cx_Oracle.DatabaseError as e: error, = e.args print("\nInvalid username/password. Please try again.")Any idea how I can display a list, have the user select a number from the list and take the corresponding database name and add it to the connection string? Thanks! RE: Display List for User Input - anelliaf - Mar-22-2018 I was able to find an interactive menu program and adjust it slightly to do what I need but I'm still having an issue with the database menu: # Import the modules needed to run the script. import sys, os import cx_Oracle import getpass # Main definition - constants menu_actions = {} # ======================= # MENUS FUNCTIONS # ======================= # Main menu def main_menu(): os.system('cls') print("Welcome!\n") print("Please choose from the menu below:") print("1. Change Password") print("2. Unlock Account") print("\n0. Quit") choice = input(" >> ") exec_menu(choice) return # Execute menu def exec_menu(choice): os.system('cls') ch = choice.lower() if ch == '': menu_actions['main_menu']() else: try: menu_actions[ch]() except KeyError: print("Invalid selection, please try again.\n") menu_actions['main_menu']() return def db_menu(choice): os.system('cls') ch = choice.lower() print("Choose a database:\n") if ch == '': menu_actions['main_menu']() else: try: db_list[ch]() except KeyError: print("Invalid selection, please try again.\n") menu_actions['main_menu']() # Database Login Menu def db_login(): while True: try: # Input username and password uname = input('\nEnter username: ') pw = getpass.getpass(prompt='Enter password: ') conn_str = u'%s/%s@%db' % (uname, pw) conn = cx_Oracle.connect(conn_str) c = conn.cursor() break except cx_Oracle.DatabaseError as e: error, = e.args print("\nInvalid username/password. Please try again.") # Menu 1 def menu1(): print("Menu Item: Change Password\n") db_menu() db_login() print("9. Back") print("0. Quit") choice = input(" >> ") exec_menu(choice) return # Menu 2 def menu2(): print("Menu Item: Unlock Account\n") db_menu() db_login() print("9. Back") print("0. Quit") choice = input(" >> ") exec_menu(choice) return # Back to main menu def back(): menu_actions['main_menu']() # Exit program def exit(): sys.exit() # ======================= # MENUS DEFINITIONS # ======================= # Database list db_list = { '1': test11c, '2': test12c, } #db_list = ['TEST11C', 'TEST12C'] # Menu definition menu_actions = { 'main_menu': main_menu, '1': menu1, '2': menu2, '9': back, '0': exit, } # ======================= # MAIN PROGRAM # ======================= # Main Program if __name__ == "__main__": # Launch main menu main_menu() RE: Display List for User Input - buran - Mar-27-2018 the discussion continued in another thread - https://python-forum.io/Thread-User-Input-to-Choose-from-Dictionary |