亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何在 Python 中使用變量更新 sqlite 條目

如何在 Python 中使用變量更新 sqlite 條目

交互式愛情 2023-10-18 15:53:40
我目前有一個使用測試條目創建的 sqlite 表,并且需要能夠使用用戶的詢問字符串來更新數據庫中條目的機架和機架定位位置(如下所示)# Move asset to another location in depotdef move_data_to_rack():    serial_to_move = askstring('Move Asset', 'Please enter the Serial Number you want to move')    serial_to_move = serial_to_move.upper()    to_rack = askstring('Move Asset', 'Please enter the Rack you want to move to')    to_rack = to_rack.upper()    to_rack_loc = askstring('Move Asset', 'Please enter the Rack LOC you want to move to')    to_rack_loc = to_rack_loc.upper()    cursor.execute('''UPDATE depot_racks SET rack, rackloc = ?, ? WHERE serial = ?''', (to_rack, to_rack_loc, serial_to_move,))    db.commit()    messagebox.showinfo('Serial Moved', serial_to_move + ' has now been moved to ' + to_rack + to_rack_loc)該表的創建如下...# Depot Table creationcursor.execute('''            CREATE TABLE IF NOT EXISTS depot_racks(                id INTEGER PRIMARY KEY,                rack TEXT,                rackloc TEXT,                floorzone TEXT,                product TEXT,                serial TEXT,                status TEXT,                entdate TEXT,                servdate TEXT,                parts TEXT,                pat TEXT)''')當上面的函數運行時,我收到以下錯誤...Exception in Tkinter callbackTraceback (most recent call last):  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/tkinter/__init__.py", line 1883, in __call__    return self.func(*args)  File "/Users/grantpeach/Library/Mobile Documents/com~apple~CloudDocs/Programming/Python Programming/Personal Projects/Arjo RackSys/RackSysMain.py", line 104, in move_data_to_rack    cursor.execute('''UPDATE depot_racks SET rack, rackloc = ?, ? WHERE serial = ?''', (to_rack, to_rack_loc, serial_to_move,))sqlite3.OperationalError: near ",": syntax error因此,該功能背后的想法是,用戶將添加他們想要更新的序列號,然后輸入新的機架位置(例如 RACK1)和新的機架位置(例如 A)。然后,這應該找到序列號,并且僅使用該序列更新該行的機架和機架鎖定部分。非常感謝任何幫助
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

每個?占位符必須分配給相應的列名稱:

cursor.execute('''UPDATE?depot_racks?SET?rack?=??,?rackloc?=???WHERE?serial?=??''',?(to_rack,?to_rack_loc,?serial_to_move,))

如果您的 SQLite 版本是 3.15.0+,您還可以使用行值語法:

cursor.execute('''UPDATE?depot_racks?SET?(rack,?rackloc)?=?(?,??)?WHERE?serial?=??''',?(to_rack,?to_rack_loc,?serial_to_move,))



查看完整回答
反對 回復 2023-10-18
  • 1 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號