App下載

使用Pymysql進行用戶登錄驗證

玹三 2021-11-09 15:20:06 瀏覽數(shù) (3153)
反饋

之前學(xué)習(xí)過的用戶登錄驗證,全都是在程序中完成的,并沒有和數(shù)據(jù)庫發(fā)生任何的接觸。最近在學(xué)習(xí)數(shù)據(jù)庫sql語言,突發(fā)奇想結(jié)合數(shù)據(jù)庫完成用戶登錄驗證。具體實現(xiàn)思路和過程如下:

1、首先在數(shù)據(jù)庫中創(chuàng)建一張用戶相關(guān)信息的表,主要的是用戶名和密碼。這里面 id 是主鍵,用戶名是唯一的。

image-20211109145318215

2、導(dǎo)入pymysql庫,并創(chuàng)建數(shù)據(jù)庫連接和游標。

import pymysql
conn = pymysql.connect(
   host='localhost',
   user='root',
   password='123456',
   database='db_game'
)
cursor = conn.cursor(pymysql.cursors.DictCursor)

3、編寫sql。由于這里用戶名是唯一的,所以我只需要檢索用戶名相應(yīng)的那一條信息,然后將密碼進行對比,一樣就可以成功登陸了。

sql = '''
  SELECT * FROM tbl_user WHERE username=%s
'''

4、獲取用戶輸入的用戶名和密碼。

username = input('請輸入用戶名:')
password = input('請輸入密碼:')

5、執(zhí)行sql語句,獲取數(shù)據(jù)庫表中的信息。由于用戶名唯一,所以一定只有一條信息,因此使用了fetchone()獲取信息。

cursor.execute(sql, username)
a = cursor.fetchone()

6、做判斷。如果返回的結(jié)果集為空,說明輸入的用戶名不存在于數(shù)據(jù)表中。如果存在,進行對比密碼,對比不成功就是密碼錯誤;對比成功,就可以成功登錄。

if a is None:
  print("用戶不存在!")
elif a['password'] != password:
  print("密碼錯誤!")
else:
  print("成功登錄!")

7、最后不要忘記了關(guān)閉游標和數(shù)據(jù)庫。

cursor.close()
conn.close()

8、運行結(jié)果

image-20211109145835069

image-20211109145853920

image-20211109145907523

image-20211109145923493

9、總結(jié)

上述內(nèi)容就是關(guān)于我對于和數(shù)據(jù)庫結(jié)合的用戶登錄驗證的簡單實現(xiàn)。但此中亦有不完美之處,就是缺少了一部分:如果密碼正確,用戶名不正確,提示用戶名錯誤的內(nèi)容。


1 人點贊