溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

pymysql實(shí)現(xiàn)用戶登錄驗(yàn)證的代碼怎么寫

發(fā)布時(shí)間:2022-01-21 09:19:47 來源:億速云 閱讀:281 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了pymysql實(shí)現(xiàn)用戶登錄驗(yàn)證的代碼怎么寫的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇pymysql實(shí)現(xiàn)用戶登錄驗(yàn)證的代碼怎么寫文章都會(huì)有所收獲,下面我們一起來看看吧。

思考過程

在此之前,我一直糾結(jié)一個(gè)問題。用戶名是唯一的,而密碼卻是重復(fù)的,一條SQL語(yǔ)句,如何在fetchonefetchall之間進(jìn)行抉擇。于是,腦子就剪不斷,理還亂了,整個(gè)都纏繞在一起。在冷靜思考之后,發(fā)現(xiàn)了問題,為什么程序中SQL語(yǔ)句只能是一條??jī)蓚€(gè)內(nèi)容不能拆分開嗎?

于是,靈光一現(xiàn)。首先使用一條SQL語(yǔ)句,搜索數(shù)據(jù)表中username字段是,因?yàn)橛脩裘俏ㄒ坏?,搜索的結(jié)果集用fetchone。判斷結(jié)果集是否為空,不為空就就可以判斷密碼是否一致,一致就成功登錄,不一致就是密碼錯(cuò)誤。如果結(jié)果集為空,則進(jìn)行下一條SQL語(yǔ)句的執(zhí)行。

這一條SQL語(yǔ)句搜索數(shù)據(jù)表中password字段和密碼一樣的全部信息,這時(shí)候使用fetchall獲取所有內(nèi)容,返回結(jié)果是一個(gè)列表。如果列表為空,就是用戶名和密碼都不正確;如果列表不為空,那么就是用戶名輸入錯(cuò)誤了。

進(jìn)行一番測(cè)試驗(yàn)證后,效果還不錯(cuò)!下面是具體的代碼內(nèi)容。

具體代碼

import pymysql# 創(chuàng)建數(shù)據(jù)庫(kù)連接conn = pymysql.connect(
    host='localhost',
    user='root',
    password='123456',
    database='db_game')# 獲取用戶輸入的用戶名和密碼username = input("請(qǐng)輸入用戶名:")
password = input("請(qǐng)輸入密碼:")# 創(chuàng)建游標(biāo)cursor = conn.cursor(pymysql.cursors.DictCursor)# 查詢數(shù)據(jù)庫(kù)中與用戶輸入的用戶名相同的信息sql = '''SELECT * FROM tbl_user WHERE username=%s'''# 執(zhí)行sql語(yǔ)言cursor.execute(sql,username)# 因?yàn)橛脩裘俏ㄒ坏?,所以使用fetchone獲取a = cursor.fetchone()# 如果獲取的結(jié)果集為空if a is None:## 查詢數(shù)據(jù)庫(kù)中所有和用戶輸入的密碼相同的全部信息sql = '''SELECT * FROM tbl_user WHERE password=%s'''cursor.execute(sql, [password])## 密碼是可重復(fù)的,所以使用了fetchalll = cursor.fetchall()## 判斷如果獲取的結(jié)果集列表是空列表,則表示沒有這個(gè)用戶。if l == []:
        print("用戶名和密碼輸入錯(cuò)誤!")## 否則就是用戶名輸錯(cuò)了。else:
        print("用戶名輸入錯(cuò)誤!")# 獲取的結(jié)果集不為空else:## 判斷結(jié)果集中password字段的值是否與輸入的密碼相同。如果一致,成功登錄if a['password'] == password:
        print('成功登錄!')## 否則就是密碼輸入錯(cuò)誤else:
        print('密碼輸入錯(cuò)誤!')
cursor.close()
conn.close()

關(guān)于“pymysql實(shí)現(xiàn)用戶登錄驗(yàn)證的代碼怎么寫”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“pymysql實(shí)現(xiàn)用戶登錄驗(yàn)證的代碼怎么寫”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI