That should be, of course: ``` insertValues = { 'f1': Clnt_Num, 'f2': client_name.get(), 'f3': address_name.get(), 'f4': city_name.get(), 'f5': state_name.get(), 'f6': zipcode_name.get(), 'f7': email_name.get(), 'f8': IP_1_name.get(), 'f9': IP_2_name.get(), 'f10': Keys_ordered_name.get(), 'f11': Order_number_name.get(), 'f12': Date_ordered_name.get(), 'f13': Agent_code_name.get(), 'f14': Client_logo_name.get(), 'f15': Billing_mth_name.get() } for key, value in insertValues.items(): print(key, type(value), value) cur.execute("INSERT INTO NiCE_clients VALUES (:f1, :f2, :f3, :f4, :f5, :f6, :f7, :f8, :f9, :f10, :f11, :f12, :f13, :f14, :f15)", insertValues) ``` because .items() only applies to dictionary-like objects and not set-like objects; the use of .items() by implication indicating that you expect insertValues to be a dictionary-like object. Also, the second parameter to the .execute method must be a dictionary like object since the SQL is using named parameters.