【问题标题】:TypeError: 'Connection' object is not callableTypeError:“连接”对象不可调用
【发布时间】:2016-02-18 15:57:54
【问题描述】:

您好,我正在按照在线教程构建一个烧瓶网络应用程序,当我尝试通过注册按钮将信息存储到我的数据库中时,一直遇到此错误。

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

我的理论是安装过程中出现问题,但我不确定。

【问题讨论】:

  • 请检查您的代码中的缩进是否正确。

标签: python flask mysql-python


【解决方案1】:

我最近遇到了同样的问题,我解决了它

通过使用 conn = mysql.connect 而不是 conn = mysql.connect()

【讨论】:

    【解决方案2】:

    这不是您使用 flask.ext.mysqldb 获得连接或游标的方式。见the documentation

    应该是:

    cur = mysql.connection.cursor()
    

    因此您根本不需要显式创建连接。

    (请注意,似乎确实有一个单独的项目,flask-mysql,其 API 略有不同 - 这可能是混乱的来源。)

    【讨论】:

    • 感谢您的帮助,但现在我收到此错误:_mysql_exceptions.OperationalError: (1046, 'No database selected')
    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2018-12-25
    • 2021-04-15
    • 2011-10-01
    • 2020-11-10
    • 2017-09-09
    • 2016-07-23
    相关资源
    最近更新 更多