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])
'``
带有 sqllite 的 Python 需要一个元组并且有 ?作为占位符
所以将你的代码重写为
row = c.execute("SELECT * FROM MyPlayers WHERE playerID=?", (id,))