我如何修复我的代码 sqlite3.OperationalError: close "%": 语法错误上的此错误

问题描述 投票:0回答:1
def display():
    records = c.execute("SELECT * FROM MyPlayers")
    global i
    i = 0
    for player in records:
        for j in range(len(player)):
            playerLabel = Label(playerFrame, width=10, bg='#ffd6e7',fg='black', text=player[j], borderwidth=0)
            playerLabel.grid(row=i, column=j)
            editButton = Button(playerFrame, width=3,bg='#ffd6e7', text="Edit", relief='ridge', anchor='w', command=lambda k=player[0]: edit(k))
            editButton.grid(row=i, column=7, padx=2, pady=1)
            viewButton = Button(playerFrame, text="View Stats", width=8,bg='#ffd6e7', relief='ridge', anchor='w')
            viewButton.grid(row=i, column=8)
        i +=1

#edit data and update db
def edit(id):
    global i
    print(id)
    conn = sqlite3.connect("player_record.db")
    c = conn.cursor()
    id_entry.delete(0, END)
    fn_entry.delete(0, END)
    ln_entry.delete(0, END)
    bd_entry.delete(0, END)
    pos_entry.delete(0, END)
    height_entry.delete(0, END)
    weight_entry.delete(0, END)
    row = c.execute("SELECT * FROM MyPlayers WHERE playerID=%s", id)
    s = row.fetchone()
    id_entry.insert(0, s[0])
    fn_entry.insert(0, s[1])
    ln_entry.insert(0, s[2])
    bd_entry.insert(0, s[3])
    pos_entry.insert(0, s[4])
    height_entry.insert(0, s[5])
    weight_entry.insert(0, s[6])
'``
python sql sqlite tkinter tkinter-entry
1个回答
0
投票

带有 sqllite 的 Python 需要一个元组并且有 ?作为占位符

所以将你的代码重写为

row = c.execute("SELECT * FROM MyPlayers WHERE playerID=?", (id,))
© www.soinside.com 2019 - 2024. All rights reserved.