2016-02-18 69 views
0

嗨我正在跟隨一個教程在線建立一個瓶Web應用程序,並在嘗試通過註冊按鈕將信息存儲到我的數據庫時遇到此錯誤。TypeError:'連接'對象不可調用

from flask import Flask, render_template, json, request 
from flask.ext.mysqldb import MySQL 
from werkzeug import generate_password_hash, check_password_hash 

app = Flask(__name__) 

mysql = MySQL(app) 

# MySQL configurations 
app.config['MYSQL_DATABASE_USER'] = 'root' 
app.config['MYSQL_DATABASE_PASSWORD'] = 'pass' 
app.config['MYSQL_DATABASE_DB'] = 'table' 
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(): 


_phonenumber = request.form['phonenumber'] 
_name = request.form['name'] 
_password = request.form['password'] 

if _phonenumber and _name and _password: 
    conn = mysql.connect()   
    cursor = conn.cursor() 
    _hashed_password = generate_password_hash(_password) 
    cursor.callproc('sp_createphoneuser', (_phonenumber,_name,_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>'}) 



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

所以這是我的代碼,每次我嘗試註冊一個用戶我得到這個錯誤在終端:

File "/home/john/FlaskApp/app.py", line 35, in signUp 
conn = mysql.connect() 
TypeError: 'Connection' object is not callable 

我的理論是,有安裝過程中的問題,但我不確定。

+0

請檢查你的代碼的縮進是正確的。 –

回答

1

這不是你如何通過flask.ext.mysqldb獲得連接或遊標。請參閱the documentation

它應該是:

cur = mysql.connection.cursor() 

,所以你並不需要在所有明確創建連接。

(請注意,似乎是一個獨立的項目,瓶-mysql的,具有略微不同的API - 這可能是其中的混亂是來自)

+0

感謝您的幫助,但現在我收到此錯誤:_mysql_exceptions.OperationalError:(1046,'No database selected') – john

1

我最近面臨同樣的問題,我解決了它

使用 conn = mysql.connect代替conn = mysql.connect()

相關問題