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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

湖上湖 2023-06-06 16:13:33
這是我第一次使用 sqlite3 并且我正在使用數(shù)據(jù)庫。我正在制作一個在線井字游戲,這樣我就可以和我的朋友一起玩了。在def dataRead():我嘗試讀取用戶從注冊窗口輸入的數(shù)據(jù)時,我正在嘗試檢查數(shù)據(jù)是否已保存在數(shù)據(jù)庫中。如果是,用戶必須輸入另一個用戶名。    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()的記錄,以便程序可以檢查用戶名是否可用,但它似乎不起作用(至少對我而言)。usernameuserInfo
查看完整描述

2 回答

?
青春有我

TA貢獻1784條經(jīng)驗 獲得超8個贊

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



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

TA貢獻1829條經(jīng)驗 獲得超6個贊

返回的記錄是元組,因此您需要改用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字段成為一個獨特的字段:


def createTable():

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

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


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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