Python 3.x 如何修复TypeError:'&燃气轮机';在';非类型';和';int';

Python 3.x 如何修复TypeError:'&燃气轮机';在';非类型';和';int';,python-3.x,flask,mysql-connector-python,Python 3.x,Flask,Mysql Connector Python,我正在使用Python/Flask/mysql.connector设置一个登录表单,但是我在登录中得到了错误文件“F:\Python\Apps\webapp\app.py”,第84行 如果结果>0:TypeError:“>”在“NoneType”和“int”的实例之间不受支持 我尝试过不同的事情,比如为不同的内容更改if语句,验证dictionary是否为true,但我得到了相同的错误 #Login @app.route('/login', methods=['GET', 'POST']) de

我正在使用Python/Flask/mysql.connector设置一个登录表单,但是我在登录中得到了错误文件“F:\Python\Apps\webapp\app.py”,第84行 如果结果>0:TypeError:“>”在“NoneType”和“int”的实例之间不受支持

我尝试过不同的事情,比如为不同的内容更改if语句,验证dictionary是否为true,但我得到了相同的错误

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

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

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

            #compare the 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
            cursor.close()
        else:
            error = 'Username not found'
            return render_template('login.html', error=error)
    return render_template('login.html')
如果您用于注册的信息有效,我希望表单能让您登录;如果信息无效,则会显示登录失败。显然,这些信息将从mysql数据库中提取

result = cursor.execute("SELECT * FROM users WHERE username = %s", [username])
这条线路导致了问题。它返回空值,可能是因为用户名不存在

我看到您有一个
if…else
来处理这个问题,但是如果result的值是
None
,在这种情况下,您不能将它与整数值进行比较-
0

在python中,您可以通过执行以下操作来检查值是否不是
None

if result:
    # code
else:
    # code
希望这有帮助。祝你好运。

我解决了这个问题。 我从
import mysql.connector
更改为
从flask\u mysqldb import mysql

删除mysql.connector配置,并根据下面的示例添加数据库详细信息

 app.config['MYSQL_HOST'] = 'localhost'
 app.config['MYSQL_USER'] = 'scott'
 app.config['MYSQL_PASSWORD'] = ''
 app.config['MYSQL_DB'] = 'users'
 app.config['MYSQL_CURSORCLASS'] = 'DictCursor'
之后,我必须初始化应用程序

mysql = MySQL(app)
最后一部分是创建一个游标,如下面的示例所示

cursor = mysql.connection.cursor()
我还更改了我的if声明,以反映@Harshal Parekh的建议

而不是

    if result > 0:
我曾经

    if result:

希望这对其他人有所帮助。

我尝试过,但得到了一个不同的错误,AttributeError:“NoneType”对象没有属性“convert\u to\u mysql”