【问题标题】:Checking for multiple values Python MySQL检查多个值Python MySQL
【发布时间】:2019-02-12 22:25:23
【问题描述】:

我正在尝试使用 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.x mysql-python


    【解决方案1】:

    只需更改 SQL 语法:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多