验证用户是否已经存在

时间:2019-03-13 23:40:02

标签: python python-3.x

我正在python烧瓶中登录,注册一个新用户时,我想在数据库中搜索。如果用户已经注册,则代码应发送一条消息,提示用户已存在。

这是我的注册码:

@app.route('/register', methods=["GET", "POST"])
def register():
    if request.method == 'GET':
        return render_template("register.html")
    else:
        name = request.form['name']
        email = request.form['email']
        code = request.form['code']
        password = request.form['password'].encode('utf-8')
        hash_password = bcrypt.hashpw(password, bcrypt.gensalt())

        cur = mysql.connection.cursor()
        cur.execute("INSERT INTO users (name, email, code, password) VALUES (%s,%s,%s,%s)",(name,email,code,hash_password,))
        mysql.connection.commit()
        session['name'] = request.form['name']
        session['email'] = request.form['email']
        session['code'] = request.form['code']
        return redirect(url_for('home'))

你会怎么做?

1 个答案:

答案 0 :(得分:1)

在使用INSERT INTO SQL查询之前,您可以使用SELECT FROM SQL查询检查用户是否存在。

cur.execute("SELECT 1 FROM users WHERE name=%s AND email=%s AND code=%s", (name,email,code))

如果其中一个字段(名称,电子邮件或代码)是主键,那么您甚至不需要检查其他值,仅使用主键字段即可简化查询,例如

cur.execute("SELECT 1 FROM users WHERE code=%s", (code,))

尽管如此,如果响应中包含一行,则该用户存在;如果响应中不包含任何行,则该用户不存在。

if cur.rowcount == 1:
  return redirect(url_for('user_already_exists')) # Send a response redirecting to a page saying the user already exists, if you have a page for that

如果您正在询问如何编写SQL查询(看起来如此),那么我建议您首先阅读SQL教程,例如从W3Schools中阅读。

相关问题