第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

無法從數(shù)據(jù)庫記錄中讀取sqlite3 python

無法從數(shù)據(jù)庫記錄中讀取sqlite3 python

湖上湖 2023-06-06 16:13:33
這是我第一次使用 sqlite3 并且我正在使用數(shù)據(jù)庫。我正在制作一個(gè)在線井字游戲,這樣我就可以和我的朋友一起玩了。在def dataRead():我嘗試讀取用戶從注冊(cè)窗口輸入的數(shù)據(jù)時(shí),我正在嘗試檢查數(shù)據(jù)是否已保存在數(shù)據(jù)庫中。如果是,用戶必須輸入另一個(gè)用戶名。    def register():        ##initialising sqlite        con = sqlite3.connect("userData.db")        c = con.cursor()        def submit():            #creating tables in the database            def createTable():                c.execute("CREATE TABLE IF NOT EXISTS userInfo(username TEXT, password TEXT)")            def dataRead():                username = user.get()                password = pword.get()                c.execute("SELECT username FROM userInfo")                data = c.fetchall()                try:                    for row in data:                        if row == username:                            Label(regWin, text = "Sorry, username already in use...\nTry another one.", fg = "red").pack()                            print(data)                        else:                            dataEntry(username, password)                except TypeError:                    dataEntry(username, password)                                def dataEntry(username, password):                c.execute("INSERT INTO userInfo(username, password) VALUES (?, ?)", (username, password))                con.commit()                            createTable()            dataRead()        我嘗試使用讀取inc.fetchall()的記錄,以便程序可以檢查用戶名是否可用,但它似乎不起作用(至少對(duì)我而言)。usernameuserInfo
查看完整描述

2 回答

?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊

fetchall方法返回一個(gè)元組列表,無論是一列還是多列因此,這里的比較if row == username:永遠(yuǎn)不會(huì)成立。如果你想要元組的第一個(gè)元素,它是通常的,即row[0].



查看完整回答
反對(duì) 回復(fù) 2023-06-06
?
肥皂起泡泡

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊

返回的記錄是元組,因此您需要改用row[0] == username:


def dataRead():

    username = user.get()

    password = pword.get()

    

    c.execute("SELECT username FROM userInfo")

    data = c.fetchall()

    found = False

    for row in data:

        if row[0] == username:

            found = True

            Label(regWin, text = "Sorry, username already in use...\nTry another one.", fg = "red").pack()

            print(row)

            break

    if not found:

        dataEntry(username, password)

但是,您不需要從數(shù)據(jù)庫中獲取所有記錄。您可以使用WHERE子句來獲取所需的記錄:


def dataRead():

    username = user.get()

    password = pword.get()


    c.execute('SELECT username FROM userInfo WHERE username = ?', (username,))

    data = c.fetchone()

    if data:

        Label(regWin, text = "Sorry, username already in use...\nTry another one.", fg = "red").pack()

        print(data)

    else:

        dataEntry(username, password)

最好使username字段成為一個(gè)獨(dú)特的字段:


def createTable():

    c.execute("CREATE TABLE IF NOT EXISTS userInfo(username TEXT PRIMARY KEY, password TEXT)")

這樣表中就沒有重復(fù)的用戶名了。


查看完整回答
反對(duì) 回復(fù) 2023-06-06
  • 2 回答
  • 0 關(guān)注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)