Hỏi về MySQLdb trong python

Xin chào các bạn, mình vào thẳng vấn đề luôn: Hiện mình đang tập làm back-end với python dùng Flask Framework, mình có tạo 1 page để user đăng kí tài khoản (sử dụng wtforms) nhưng sau khi mình POST dữ liệu thì dữ liệu không được lưu vào database. Đây là code của mình:

@app.route('/register/', methods=["GET","POST"])
def registry_page():
	try:
		form = RegistryForm(request.form)
		if request.method =="POST" and form.validate_on_submit():
			c, conn = connection()
			name=form.username.data
			passwd=form.password.data
			x=c.execute("SELECT * FROM users WHERE username=(%s)",(thwart(name)))
			
			if int(x)>0:
				message= "User already exist"
				return render_template("registry.html", form = form, message=message)
			else:
				c.execute("INSERT INTO users (username,password) VALUES (%s,%s)", (thwart(name),thwart(passwd)))
				conn.commit()
				c.close()
				conn.close()
				gc.collect()
				return redirect(url_for('loginpage',message="You can login now"))
		return render_template("registry.html", form=form)
	except Exception as e:
		return(str(e))

Hiện giờ mình đang vẫn tìm cách để lưu tài khoản của người dùng vào db nhưng không được dù đã gọi hàm commit(). Có bạn nào có kinh nghiệm hoặc biết fix thì chỉ mình với :blush: Mình làm trong console của python thì commit vô tư nhưng vào code lại chạy không được @@

1 Like

help me :weary: :cry:

Trước hết đổi câu lệnh sau:

x=c.execute("SELECT * FROM users WHERE username=(%s)",(thwart(name)))

Thành:

c.execute("SELECT count(*) as User_Count FROM users WHERE username=(%s)",(thwart(name)))

oneRow = c.fetchone()

if oneRow != None and oneRow["User_Count"] > 0 :
    // Thong bao da ton tai user
else :
    // Insert...

Code trên sử dụng PyMySQL nhưng nó tương tự với MySQLdb:
Bạn có thể tham khảo thêm ở đây:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?