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

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

Python類型元組無法轉換MySQL

Python類型元組無法轉換MySQL

Smart貓小萌 2023-12-05 15:30:21
我真的不明白元組是如何工作的。但我所知道的是它們看起來像這樣。    (1, variable)但我不斷收到錯誤:Python type tuple cannot be converted有人可以幫忙嗎這是我的代碼:    @client.command()async def buy(ctx, item: str):    USER_ID = ctx.message.author.id    write_log("Buy command requested")    #write_log("Sending GET request to Cosmos API...")    try:        SQL.execute("SELECT price FROM shop WHERE itemname = %s", (item,))        price = SQL.fetchone()        SQL.execute("SELECT balance FROM Accounts WHERE user_id = %s", (USER_ID,))        SQL.execute("UPDATE Accounts SET balance = balance - %s WHERE user_id = %s", (price, USER_ID))        db.commit()        await ctx.send(f"Successfully bought **{item}** for **{price} Rollars**.")    except Exception as ex:        write_log('ERROR')        full_traceback = traceback.format_exc()        write_log(f'Errored whilst sending ctx(embed), (about): {ex} {full_traceback}')完整的回溯:Traceback (most recent call last):  File "Bot.py", line 316, in buy    SQL.execute("UPDATE Accounts SET balance = balance - %s WHERE user_id = %s", (price, USER_ID))  File "/home/vihanga/lib/python3.8/site-packages/mysql/connector/cursor_cext.py", line 248, in execute    prepared = self._cnx.prepare_for_mysql(params)  File "/home/vihanga/lib/python3.8/site-packages/mysql/connector/connection_cext.py", line 626, in prepare_for_mysql    result = self._cmysql.convert_to_mysql(*params)_mysql_connector.MySQLInterfaceError: Python type tuple cannot be converted如果您能向我解釋它是如何工作的并可能幫助我解決錯誤,我將不勝感激。
查看完整描述

1 回答

?
慕后森

TA貢獻1802條經驗 獲得超5個贊

fetchone() 函數以元組形式返回結果。因此,當您使用 fetchone 時,存儲在價格變量中的值是一個如下所示的元組:(100,)。然后,當您執行更新查詢時,您將傳遞整個元組,因為您在另一個元組中收到了它。例如,如果價格值返回為100,那么下面是您傳遞給執行函數的內容。 SQL.execute("UPDATE ..... ", ((100,), USER_ID))

因此,參數的第一個元素是元組而不是值,并且您會收到該錯誤,因為數據庫認為那里有一些可以使用的值,但是由于它找到一個元組作為第一個元素,因此您會收到該錯誤。您應該做的只是傳遞一個整數值作為價格參數,因此它看起來像這樣:SQL.execute("UPDATE ..... ", (100, USER_ID)) 為此,您可以通過在元組前面放置 * 來解壓元組,或者從中獲取第一個值,例如price[0]。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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