我正在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'))
你会怎么做?
答案 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中阅读。