mysql - 查询 PostgreSQL 返回 NoneType
问题描述
在部署在 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 数据库的
解决方案
看起来该查询不会返回整数。
也许您想选择COUNT(*)
而不是*
获取匹配的行数。
推荐阅读
- python - 使用 KMeans 生成漂亮的聚类图
- passport.js - Hyperledger Fabric Composer-Rest-Server 如何设置用户名/密码验证?
- python - .INI 文件中一个标题下的键、值
- unity3d - 如何在 unity 2018 中从 Asset Bundle 加载场景
- java - 将 Spring 与 Serenity/JBehave 测试集成
- postgresql - 外键定义中的列顺序是否重要?
- ruby-on-rails - 如何在原始应用程序中测试狂欢装饰器?
- ios - iOS IAP 无法在 Unity 上运行,“服务不可用”
- export - GitLab 项目导出错误(tar 过滤错误)
- node.js - 打字稿:Visual Studio 代码无法为 mssql 获得正确的打字