首页 > 解决方案 > 检查多个值Python MySQL

问题描述

我正在尝试使用 Python 执行查询,但是,当尝试获取用户输入网站的电子邮件和密码时,它返回“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册在第 1 行的“dsfs”附近使用的正确语法”(dsfs 是不正确的密码)

@login_blueprint.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST' and 'email' in request.form:
        try:
            email = request.form['email']
            password = request.form['password']
            database = mysql.connector.connect(
                host=DBHost,
                user=DBUser,
                passwd=DBPass,
                database=DB
            )
            cursor = database.cursor()
            query = "SELECT * FROM users WHERE (email, password) = %s, %s"
            values = (email, password)
            cursor.execute(query, values)
            cursor.fetchall()
            return render_template('dashboard.html', email=email)
        except Exception as error:
            print(error)
            return jsonify(result='that account does not exist')
    return render_template('login.html')

当我注册详细信息时,它工作正常并将数据输入到 MySQL 表中。

@register_blueprint.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST' and 'email' in request.form:
        email = request.form['email']
        password = request.form['password']
        database = mysql.connector.connect(
            host=DBHost,
            user=DBUser,
            passwd=DBPass,
            database=DB
        )
        cursor = database.cursor()
        query = "INSERT INTO users (email, password) VALUES (%s, %s)"
        values = (email, password)
        cursor.execute(query, values)
        database.commit()
        return jsonify(result='account created, proceed to login')
    return render_template('register.html')

标签: python-3.xmysql-python

解决方案


只需更改 SQL 语法:

query = "SELECT * FROM users WHERE email = %s AND password = %s"
values = (email, password)
cursor.execute(query, values)
cursor.fetchall()

并且 fetchall() 方法的空值不会引发任何异常,它返回空元组


推荐阅读