通过flask框架访问XAMPP中的MySQL数据库

时间:2016-09-19 08:28:40

标签: python mysql xampp

我刚刚开始研究我的宠物项目的Flask框架,所以,我一直在研究envato tutsplus的教程。我在XAMPP服务器中的MySQL中构建数据库,我正在尝试访问它,但我不知道如何去做。

我在Chrome控制台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']。我认为将localhost作为值可以使用,但事实并非如此,所以我尝试了不同的值,如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)

1 个答案:

答案 0 :(得分:0)

MYSQL_DATABASE_HOST应该是数据库主机的地址,因此是名称,而不是您的网络应用程序。

查看the docs,默认为&#34; localhost&#34;匹配端口设置为3306,对于您的设置应该没问题;你应该完全删除你的定义。