python-3.x - 检查多个值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')
解决方案
只需更改 SQL 语法:
query = "SELECT * FROM users WHERE email = %s AND password = %s"
values = (email, password)
cursor.execute(query, values)
cursor.fetchall()
并且 fetchall() 方法的空值不会引发任何异常,它返回空元组
推荐阅读
- php - 如何循环遍历 mysql 查询的结果并将它们显示在 html 表单的选项值中
- javascript - 导入和使用 NPM 包
- playframework - 创建actor时的新play 2.6 application.conf默认值和最佳实践
- c# - 以相反的顺序将数组值传递给另一个数组
- .net-core - .Net Core Debug Logger 在日志级别打印工件
- c - 使用 libtiff 在 C 中读取 .tif 图像返回一列
- python - seq[pos:pos + size] for pos in range(0, len(seq), size) 在 Python 中做了什么?
- python - 如何在股票预测的实际实践中使用训练有素的深度学习代码
- javascript - 在组件构造函数之外使用时变量未定义
- attask - 无法搜索assignedToID 的任务:null