Python 我对sql查询don´有问题;不要在烧瓶里工作

Python 我对sql查询don´有问题;不要在烧瓶里工作,python,mysql,flask,flask-mysql,Python,Mysql,Flask,Flask Mysql,我尝试运行该代码,但sql查询有问题,但如果在mysql workbeck中运行查询,它就会工作 app.config['MYSQL_HOST'] = "localhost" app.config['MYSQL_USER'] = "root" app.config['MYSQL_PASSWORD'] = "" app.config['MYSQL_DB'] = "inventario_bodega" mysql = MySQL(app) @app.route("/login", methods=

我尝试运行该代码,但sql查询有问题,但如果在mysql workbeck中运行查询,它就会工作

app.config['MYSQL_HOST'] = "localhost"
app.config['MYSQL_USER'] = "root"
app.config['MYSQL_PASSWORD'] = ""
app.config['MYSQL_DB'] = "inventario_bodega"
mysql = MySQL(app)

@app.route("/login", methods=["POST"])
def login():
    try:
        data = request.json
        user = data["user"]
        password = data["password"]
        cur = mysql.connection.cursor()
        #thats part don´t work
        cur.execute("SELECT * FROM usuarios WHERE usuario = %s", (user))

        data = cur.fetchone()
        cur.close()
        if(not (data == [])):
            if(data[6] == password):
                encoded_jwt = jwt.encode(
                    {'datos': data}, app.config['SECRET_KEY'], algorithm='HS256')
                return encoded_jwt, 200
            else:
                return "Usuario y/o Contraseña incorrecta", 401
        else:
            return "Usuario y/o Contraseña incorrecta", 401
    except:
        return "Error al iniciar sesion", 500
但不要告诉我一个错误,只告诉我500个错误

cur.exectute()需要一个元组或参数列表。看起来您正在尝试前者,这是Python中的一种边缘情况,其中逗号区分用于形成元组的括号或用于控制求值顺序的括号

改变

cur.execute("SELECT * FROM usuarios WHERE usuario = %s", (user))


您能更好地定义“不工作”吗?这不是一个非常详细的诊断。您的查询有什么问题?MySQL身份验证详细信息(用户、密码、数据库等)在哪里?我猜应该是
usuario='%s'“
请注意附加的单引号。但是,您应该真正致力于跟踪原始错误消息。您可以轻松地将代码包装在try…except中,并在某处记录/打印异常。您已经尝试了..除了,您只是没有对原始异常执行任何操作。另一个猜测是
cur.execute
的seconds参数必须是一个iterable,在这种情况下
(user)
应该是
(user,)
,将其转换为元组。
cur.execute("SELECT * FROM usuarios WHERE usuario = %s", (user,))