为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 244 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信