Как я могу решить этот простой банковский USSD-КОД (python)?

#python #ussd

Вопрос:

Я пишу простой банковский ussd-код и получаю эту ошибку, когда пытаюсь запустить ussd.

  * Serving Flask app 'trevussd2' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL C to quit)
 * Running on http://91b657bcef8c.ngrok.io

    Traceback (most recent call last):
  , line 2070, 
  ``in wsgi_app
    response = self.full_dispatch_request()
  , line 1515, ` 
  ``in full_dispatch_request
    rv = self.handle_user_exception(e)
   line 1513, in full_dispatch_request
    rv = self.dispatch_request()
  , line 1499, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  , line 147, in ``enterdetails
 ``   response=user.select(AccountNo)
``UnboundLocalError: local variable 'AccountNo' referenced before assignment
``127.0.0.1 - - [18/Aug/2021 11:10:04] "POST / HTTP/1.1" 500 -
``127.0.0.1 - - [18/Aug/2021 11:10:04] "GET / HTTP/1.1" 200 -
``127.0.0.1 - - [18/Aug/2021 11:10:09] "GET /favicon.ico HTTP/1.1" 404 -
 

Вот пример кода:

 from flask import Flask, request
from flask_ngrok import run_with_ngrok

app = Flask(__name__)
run_with_ngrok(app)
import pymysql


class User():

    def connection(self):
        connection = pymysql.connect(host="localhost", user="root", password="", db="bankussd", port=3306)
        return connection

    def select(self,accountno):
        user=User()
        dbcon = user.connection()
        select = "select AccountNo,Nameofclient,Age,Gender,Phonenumber,Email,Balance FROM bankuserst WHERE AccountNo=%s  "
        cursor = dbcon.cursor()
        try:
            cursor.execute(select, accountno)
            row = list(cursor.fetchall)
            return row
        except Exception as e:
            print("exception", e)
            return 0

    def insert(self,Nameofclient, Age, Gender, Phonenumber, Email, Balance):
        dbcon = self.connection()
        cursor = dbcon.cursor()
        insert_str = "insert into bankuserst(Nameofclient,Age,Gender,Phonenumber,Email,Balance) values(%s,%s,%s,%s,%s,%s)"
        try:
            cursor.execute(insert_str, (Nameofclient, Age, Gender, Phonenumber, Email,Balance))
            dbcon.commit()
            print("data saved successfully")
        except Exception as e:
            print("insert exception", e)
            return 0
        dbcon.close()


    def show_details(self):
        print("Personal details")
        print("")
        print("Name: ", self.name)
        print("Age: ", self.age)
        print("Gender: ", self.gender)
        print("Phone number: ", self.phonenumber)
        print("Email: ", self.email)
        return 0

user=User()


class Bank():

       def deposit(self, Balance):
        amount =Balance 0
        # once a custo
        user = User()
        user.insert(Nameofclient='', Age="", Gender="", Phonenumber="", Email="",Balance=amount)
        print("Account balance has been updated: ksh.", Balance)
        return 0

       def withdraw(self, Balance):
           amount =Balance-0
           user = User()
           user.insert(Nameofclient='',Age='',Gender='',Phonenumber='',Email='',Balance=amount)
           print("New account balance is : ksh.", Balance)
           return 0

       def view_balance(self):
        self.show_details()
        print("Account balance: ", self.balance)
        return 0
bank=Bank()

@app.route('/', methods=("POST", "GET"))
def enterdetails():
        global response
        session_id = request.values.get("sessionId", None)
        service_code = request.values.get("sessionCode", None)
        phone_number = request.values.get("phonenumber", None)
        text = request.values.get("text", "Default")
        text_array = text.split("*")
        user_response = text_array[-1]
        level = len(text_array)
        if text == "":
            response = "CON WELCOME To 99's Mobile Banking ServicenAre you a:n"
            response  = "1.Registered Membern"
            response  = "2.New membern"
        elif text == "1":
            response = "CON WELCOME BACKnENTER Account Number:n"
            response=user.select()
        elif text == "1" user_response and level==2:
            response = "CON To:n"
            response  = "1.Check Account Balancen"
            response  = "2.Deposit moneyn"
            response  = "3.Withdraw Cashn"
            response  = "4.Print Account MiniStatementn"
        elif text=="1*1" user_response and level==3:
            response = "END Your Balance is KSH:n"
            response = bank.view_balance()
        elif text=="1*2" user_response and level==3:
            response = "CON Enter Amountn"
            response=bank.deposit()
        elif text_array[0] user_response and level==4:
            response=bank.deposit()
            response="END Deposit successfulln New Account Balance is KSH:n"
            response=bank.view_balance()
        elif text=="1*3" user_response and level==3:
            response="CON Enter Amountn"
        elif text_array[0] user_response and level==4:
            response=bank.withdraw()
            response="END Withdraw Successfulln New Account balance is KSH:n"
            response=bank.view_balance()
        elif text=="1*4" user_response and level==3:
            response="END Account Mini Statement:n"
            response=User.show_details()
            response=bank.view_balance()
        elif text=="2" and level==1:
            response = "CON Welcome To 99's Mobile Banking Services nEnter your Name:n"
        elif text=="2" user_response and level==2:
            response = "CON Enter your Age:n"
        elif text_array[0] and level==3:
            response = "CON Enter your Gender:n"
        elif text_array[0] and level==4:
            response = "CON Enter your Phonenumber:n"
        elif text_array[0] and level==5:
            response = "CON Enter your Email:n"
        elif text_array[0] and level==6:
            AccountNo=text_array[0]
            Amount=text_array[1]
            Amount2=text_array[2]
            Nameofclient = text_array[3]
            Age = text_array[4]
            Gender = text_array[5]
            Phonenumber = text_array[6]
            Email = text_array[7]
            user.insert(Nameofclient, Age, Gender, Phonenumber, Email,Amount,Amount2,AccountNo)
        else:
            response = "END Invalid Input"
        return response



if __name__ == '__main__':
    app.run()

 

Комментарии:

1. Похоже, что вы использовали переменную AccountNo , прежде чем предоставить ей значение. Хотя, чтобы помочь вам в дальнейшем, необходимо изучить ваш код.

2. вот код.

3. ну, я не знаю, почему из маршрута приложения код не показывает правильные отступы.

4. Вы можете ожидать больше ответов на свои вопросы, если преобразуете свой код в минимальный пример, показывающий проблему.