简体   繁体   English

为什么我的 python 应用程序继续收到 500 内部服务器错误?

[英]Why is my python app continues to get a 500 Internal Server Error?

I'm trying to get my app.py to link with MySQL database but I keep getting the following errors shown below.我试图让我的 app.py 与 MySQL 数据库链接,但我不断收到如下所示的错误。 The link to my repository is here: https://github.com/trhubwork/python-mysql-proj.git我的存储库的链接在这里: https : //github.com/trhubwork/python-mysql-proj.git

I'm running python 3.5.1我正在运行 python 3.5.1

Console Errors:控制台错误:

jquery-1.11.2.js:9659 POST [runningonlocalhost]/signUp 500 (INTERNAL SERVER ERROR)send @ jquery-1.11.2.js:9659ajax @ jquery-1.11.2.js:9210(anonymous function) @ signUp.js:4dispatch @ jquery-1.11.2.js:4665elemData.handle @ jquery-1.11.2.js:4333 signUp.js:12 Object {readyState: 4, responseText: "↵", status: 500, statusText: "INTERNAL SERVER ERROR"} jquery-1.11.2.js:9659 POST [runningonlocalhost]/signUp 500 (INTERNAL SERVER ERROR)send @ jquery-1.11.2.js:9659ajax @ jquery-1.11.2.js:9210(anonymous function) @ signUp.js :4dispatch @ jquery-1.11.2.js:4665elemData.handle @ jquery-1.11.2.js:4333 signUp.js:12 Object {readyState: 4, responseText: "↵", status: 500, statusText: "INTERNAL SERVER错误"}

Gitbash terminal Errors: Gitbash 终端错误:

  • Running on [localhost]:5002/ (Press CTRL+C to quit) 127.0.0.1 - - [29/Sep/2016 22:06:17] "GET / HTTP/1.1" 200 - 127.0.0.1 - - [29/Sep/2016 22:06:20] "GET /showSignUp HTTP/1.1" 200 - [2016-09-29 22:06:22,142] ERROR in app: Exception on /signUp [POST] Traceback (most recent call last): File "C:\\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask\\app.py", line 1988, in wsgi_app response = self.full_dispatch_request() File "C:\\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask\\app.py", line 1641, in full_dispatch_request rv = self.handle_user_exception(e) File "C:\\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask\\app.py", line 1544, in handle_user_exception reraise(exc_type, exc_value, tb) File "C:\\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask_compat.py", line 33, in reraise raise value File "C:\\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask\\app.py", line 1639, i在 [localhost]:5002/ 上运行(按 CTRL+C 退出) 127.0.0.1 - - [29/Sep/2016 22:06:17] "GET / HTTP/1.1" 200 - 127.0.0.1 - - [29/ 2016 年 9 月 22:06:20] "GET /showSignUp HTTP/1.1" 200 - [2016-09-29 22:06:22,142] 应用程序中的错误:/signUp [POST] 上的异常回溯(最近一次调用最后一次):文件“C:\\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask\\app.py”,第 1988 行,在 wsgi_app response = self.full_dispatch_request() 文件“C: \\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask\\app.py”,第 1641 行,在 full_dispatch_request rv = self.handle_user_exception(e) 文件“C:\\Users\\ TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask\\app.py”,第 1544 行,在 handle_user_exception reraise(exc_type, exc_value, tb) 文件“C:\\Users\\TR\\AppData \\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask_compat.py”,第 33 行,在重新提高值文件“C:\\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\ lib\\site-packages\\flask\\app.py”,第 1639 行,我n full_dispatch_request rv = self.dispatch_request() File "C:\\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask\\app.py", line 1625, in dispatch_request return self.view_functionsrule.endpoint File "app.py", line 54, in signUp cursor.close() UnboundLocalError: local variable 'cursor' referenced before assignment 127.0.0.1 - - [29/Sep/2016 22:06:22] "POST /signUp HTTP/1.1" 500 - [2016-09-29 22:09:03,808] ERROR in app: Exception on /signUp [POST] Traceback (most recent call last): File "C:\\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask\\app.py", line 1988, in wsgi_app response = self.full_dispatch_request() File "C:\\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask\\app.py", line 1641, in full_dispatch_request rv = self.handle_user_exception(e) File "C:\\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask\\app.py", line 1544, in handle_user_exception reraise(exc_type, exc_value, tb) File "C:\\U n full_dispatch_request rv = self.dispatch_request() File "C:\\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask\\app.py", line 1625, in dispatch_request return self .view_functionsrule.endpoint 文件“app.py”,第 54 行,在 signUp cursor.close() 中 UnboundLocalError:分配前引用的局部变量 'cursor' 127.0.0.1 - - [29/Sep/2016 22:06:22]“POST /signUp HTTP/1.1" 500 - [2016-09-29 22:09:03,808] 应用程序错误:/signUp [POST] 回溯异常(最近一次调用):文件“C:\\Users\\TR\\AppData\\ Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask\\app.py", line 1988, in wsgi_app response = self.full_dispatch_request() File "C:\\Users\\TR\\AppData\\Local\\Programs\\ Python\\Python35-32\\lib\\site-packages\\flask\\app.py”,第 1641 行,在 full_dispatch_request rv = self.handle_user_exception(e) 文件“C:\\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35 -32\\lib\\site-packages\\flask\\app.py", line 1544, in handle_user_exception reraise(exc_type, exc_value, tb) 文件 "C:\\U sers\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask_compat.py", line 33, in reraise raise value File "C:\\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask\\app.py", line 1639, in full_dispatch_request rv = self.dispatch_request() File "C:\\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask\\app.py", line 1625, in dispatch_request return self.view_functionsrule.endpoint File "app.py", line 54, in signUp cursor.close() UnboundLocalError: local variable 'cursor' referenced before assignment 127.0.0.1 - - [29/Sep/2016 22:09:03] "POST /signUp HTTP/1.1" 500 - sers\\TR\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages\\flask_compat.py”,第 33 行,重新加注值文件“C:\\Users\\TR\\AppData\\Local\\Programs\\Python \\Python35-32\\lib\\site-packages\\flask\\app.py”,第 1639 行,在 full_dispatch_request rv = self.dispatch_request() 文件“C:\\Users\\TR\\AppData\\Local\\Programs\\Python\\Python35-32 \\lib\\site-packages\\flask\\app.py", line 1625, in dispatch_request return self.view_functionsrule.endpoint 文件 "app.py", line 54, in signUp cursor.close() UnboundLocalError: local variable 'cursor' referenced分配前 127.0.0.1 - - [29/Sep/2016 22:09:03] "POST /signUp HTTP/1.1" 500 -

This is my app.py这是我的 app.py

from flask import Flask, render_template, json, request
from flaskext.mysql import MySQL
from werkzeug import generate_password_hash, check_password_hash

mysql = MySQL()
app = Flask(__name__)

# MySQL configurations
app.config['MYSQL_DATABASE_USER'] = 'jay'
app.config['MYSQL_DATABASE_PASSWORD'] = 'jay'
app.config['MYSQL_DATABASE_DB'] = 'BucketList'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
mysql.init_app(app)


@app.route('/')
def main():
    return render_template('index.html')

@app.route('/showSignUp')
def showSignUp():
    return render_template('signup.html')


@app.route('/signUp',methods=['POST','GET'])
def signUp():
    try:
        _name = request.form['inputName']
        _email = request.form['inputEmail']
        _password = request.form['inputPassword']

        # validate the received values
        if _name and _email and _password:

            # All Good, let's call MySQL

            conn = mysql.connect()
            cursor = conn.cursor()
            _hashed_password = generate_password_hash(_password)
            cursor.callproc('sp_createUser',(_name,_email,_hashed_password))
            data = cursor.fetchall()

            if len(data) is 0:
                conn.commit()
                return json.dumps({'message':'User created successfully !'})
            else:
                return json.dumps({'error':str(data[0])})
        else:
            return json.dumps({'html':'<span>Enter the required fields</span>'})

    except Exception as e:
        return json.dumps({'error':str(e)})
    finally:
        cursor.close()
        conn.close()

if __name__ == "__main__":
    app.run(port=5002)

    enter code here

Signup.html注册.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Python Flask Bucket List App</title>


    <link href="http://getbootstrap.com/dist/css/bootstrap.min.css" rel="stylesheet">

    <link href="http://getbootstrap.com/examples/jumbotron-narrow/jumbotron-narrow.css" rel="stylesheet">
    <link href="../static/css/signup.css" rel="stylesheet">
    <script src="../static/js/jquery-1.11.2.js"></script>
    <script src="../static/js/signUp.js"></script>

  </head>

  <body>

    <div class="container">
      <div class="header">
        <nav>
          <ul class="nav nav-pills pull-right">
            <li role="presentation" ><a href="showHome">Home</a></li>
            <li role="presentation"><a href="#">Sign In</a></li>
            <li role="presentation" class="active"><a href="#">Sign Up</a></li>
          </ul>
        </nav>
        <h3 class="text-muted">Python Flask App</h3>
      </div>

      <div class="jumbotron">
        <h1>Bucket List App</h1>
        <form class="form-signin">
        <label for="inputName" class="sr-only">Name</label>
        <input type="name" name="inputName" id="inputName" class="form-control" placeholder="Name" required autofocus>
        <label for="inputEmail" class="sr-only">Email address</label>
        <input type="email" name="inputEmail" id="inputEmail" class="form-control" placeholder="Email address" required autofocus>
        <label for="inputPassword" class="sr-only">Password</label>
        <input type="password" name="inputPassword" id="inputPassword" class="form-control" placeholder="Password" required>

        <button id="btnSignUp" class="btn btn-lg btn-primary btn-block" type="button">Sign up</button>
      </form>
      </div>



      <footer class="footer">
        <p>&copy; Company 2015</p>
      </footer>

    </div>
  </body>
</html>

signUp.js注册.js

$(function(){
    $('#btnSignUp').click(function(){

        $.ajax({
            url: '/signUp',
            data: $('form').serialize(),
            type: 'POST',
            success: function(response){
                console.log(response);
            },
            error: function(error){
                console.log(error);
            }
        });
    });
});

@epascarello is right, if your code doesn't enter that if statement, then you'll never even create the cursor. @epascarello 是对的,如果您的代码没有输入if语句,那么您甚至永远不会创建游标。 I think the try and finally blocks are a good idea;我认为tryfinally块是个好主意; just move your cursor up like this:只需像这样向上移动光标:

try:
    conn = mysql.connect()
    cursor = conn.cursor()
    _name = request.form['inputName']
    _email = request.form['inputEmail']
    _password = request.form['inputPassword']

    # ...
    # contents of the if and else statements here
    # ...

except Exception as e:
    return json.dumps({'error':str(e)})
finally:
    cursor.close()
    conn.close()

You can try it like that.你可以这样试试。

def signUp():
    try:
        _name = request.form['inputName']
        _email = request.form['inputEmail']
        _password = request.form['inputPassword']

        # validate the received values
        if _name and _email and _password:

            # All Good, let's call the MySQL

            with closing(mysql.connect()) as conn:
                with closing(conn.cursor()) as cursor:
                    _hashed_password = generate_password_hash(_password)
                    cursor.callproc('sp_createUser',(_name,_email,_hashed_password))
                    data = cursor.fetchall()

                    if len(data) is 0:
                        conn.commit()
                        return json.dumps({'message':'User created successfully !'})
                    else:
                        return json.dumps({'error':str(data[0])})
        else:
            return json.dumps({'html':'<span>Enter the required fields</span>'})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM