Запросы в PostgreSQL возвращают NoneType - PullRequest
0 голосов
/ 03 июля 2018

После создания пользователя в моей базе данных в моем приложении, развернутом на Heroku, я попадаю на страницу журнала в случае успеха. Когда я пытаюсь войти, он выполняет следующий запрос:

result = cur.execute("SELECT * FROM users WHERE username = %s", [username])

Тем не менее, это дает мне следующую ошибку:

018-07-03T15:02:47.167067+00:00 app[web.1]: File "app.py", line 140, in login
2018-07-03T15:02:47.167069+00:00 app[web.1]: if result > 0:
2018-07-03T15:02:47.167071+00:00 app[web.1]: TypeError: '>' not supported between instances of 'NoneType' and 'int'

Тем не менее, запрос на регистрацию прошел успешно, и я почти уверен, что предоставил правильные учетные данные. Вот этот код:

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        # Get Form Fields
        username = request.form['username']
        password_candidate = request.form['password']

        # Create cursor
        #cur = mysql.connection.cursor()
        cur = conn.cursor()

        # Get user by username
        result = cur.execute("SELECT * FROM users WHERE username = %s", [username])

        if result > 0:
            # Get stored hash
            data = cur.fetchone()
            password = data['password']

            # Compare Passwords
            if sha256_crypt.verify(password_candidate, password):
                # Passed
                session['logged_in'] = True
                session['username'] = username

                flash('You are now logged in', 'success')
                return redirect(url_for('dashboard'))
            else:
                error = 'Invalid login'
                return render_template('login.html', error=error)
            # Close connection
            cur.close()
        else:
            error = 'Username not found'
            return render_template('login.html', error=error)

Возможно, это связано с тем, что этот запрос использовался для базы данных MySQL

1 Ответ

0 голосов
/ 03 июля 2018

Не похоже, что этот запрос вернул бы целое число.

Возможно, вы хотите выбрать COUNT(*) вместо *, чтобы получить количество совпадающих строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...