2016-09-19 43 views
0

我剛剛開始研究Flask框架以獲得我的寵物項目,所以我一直在envato tutsplus中開發一個教程。我在XAMPP服務器中的MySQL中構建數據庫,並試圖訪問它,但我不知道如何去做。通過瓶頸框架訪問XAMPP中的MySQL數據庫

我在鍍鉻控制檯Failed to load resource: the server responded with a status of 500 (INTERNAL SERVER ERROR)中出現此錯誤。在執行此代碼之前,我已經啓動了XAMPP。

我知道@app.route('/signUp',methods=['POST','GET'])是研究的關鍵方法,關鍵在於app.config['MYSQL_DATABASE_HOST']。我認爲把本地主機作爲一個價值會有用,但事實並非如此,所以我嘗試了不同的值,如http://localhost:80等,但似乎並不奏效。我錯過了什麼?請幫我出

這裏是後端代碼:

from flask import Flask, render_template, request, json 
from flask_mysqldb import MySQL 
from werkzeug import generate_password_hash, check_password_hash 

mysql = MySQL() 
app = Flask(__name__) 

# MySQL configurations 
app.config['MYSQL_DATABASE_USER'] = 'root' 
app.config['MYSQL_DATABASE_PASSWORD'] = '' 
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) 
+0

是否在源代碼中if _name和_email和_password:正確縮進?因爲在你的例子中不是。 – miso

+1

請在'app.run'中啓用調試模式。所以你可以從Flask獲得更好的錯誤報告。 – miso

+0

是的,它的正確縮進沒有在這個例子中做到這一點,但現在這樣做 –

回答

0

MYSQL_DATABASE_HOST應該是你數據庫主機,因此得名,而不是你的web應用程序的地址。

看着the docs,默認是「localhost」,匹配的端口設置是3306,這對您的設置應該沒問題;你應該完全刪除你的定義。

+0

明白了,有沒有什麼辦法可以在XAMPP中訪問MySQL。在正常的Python中,我能夠使用套接字,有沒有辦法在燒瓶中做這樣的事情? –

+0

再一次看看[文檔](http://flask-mysqldb.readthedocs.io/en/latest/) - 有一個'MYSQL_UNIX_SOCKET'設置。請注意,如果您實際使用的是Flask-MySQLdb,那麼我將鏈接到上面錯誤的文檔,並且您似乎也有所有錯誤的設置名稱。請按照您正在使用的圖書館的文檔。 –

+0

謝謝,這似乎有我需要的解決方案,將檢查出來 –