1
我是一個Python語言的nube,我很難將我的Python GUI(在Tkinter中)鏈接到數據庫。佈局是這樣的,我希望最終用戶通過Entry小部件將名稱添加到數據庫。我試圖用一個變量來獲取文本保存到數據庫中,這樣的:將python GUI鏈接到MySQL數據庫
entr= Entry(frame1)
entr.grid(row=0, column=1)
var1=entr.get()
def save():
"""Save content in the entry box"""
con = mdb.connect(host="localhost", user="root", passwd="xxxxxx", db="xxxxxxx")
with con:
cur=con.cursor()
sql_update= "UPDATE Tests SET NAME='%s' WHERE id='%s'", (var1, id)
cur.execute(sql_update)
cur.close()
con.commit()
con.close()
這給後面的錯誤消息:
TypeError: query() argument 1 must be string or read-only buffer, not tuple
有沒有什麼辦法可以挽救數據不需要在其他地方使用var1 = raw_input("Name: ")
而直接使用數據庫的入口部件?
謝謝你的時間! :)
謝謝您的回覆。我試過你的方法,這次沒有錯誤,所以我決定測試它: – butteredtoast 2012-03-28 09:02:27
我剛剛注意到'%s'周圍的引號 - 你需要刪除它們。 dbapi會照顧正確地引用你的屬性(或者如果數據庫支持,分別傳遞它們),所以引用它們會導致問題。 – ThiefMaster 2012-03-28 09:13:28
這次我嘗試了你的方法並沒有錯誤,所以我決定使用cur.execute(「SELECT * FROM Tests」)對其進行測試。 rows = cur.fetchall() 對於行中的行: print row添加的項目(1L,「'」) (2L,「'」) (3L,「'」) (4L,「'」) (5L,「'」),這意味着它是變量有問題。我知道它應該是顯而易見的,但它是我引用var1 = ent.get()給出這個輸出的方式嗎?任何其他方式來獲取來自入口小部件的文本?非常感謝您的幫助。 – butteredtoast 2012-03-28 09:14:24