我无法在 Python 中更新我的 SQL 数据库,但可以添加新行
I am unable to update my SQL database in Python, but can add new rows
如果之前发布过类似的问题(毫无疑问),我深表歉意,但我似乎找不到具有类似问题的问题。我正在使用 Python、SQL 和 Hangouts Chat 构建一个基本的票务系统机器人。聊天部分并不真正相关。在核心层面上,我想做的就是用 Python 脚本更新一个非常基本的 SQL 数据库。我可以很好地插入和查看我的记录。请注意,我也在环聊聊天机器人中使用它,因此我对此表示歉意,同时我的代码目前非常'wide open',因为我正在通过分别查看每个变量来调试它。完成后我会把它全部整理好。
elif "!update" in messagesentstr:
messagesentstrsplit = messagesentstr.split(" ", 3) #Takes string from Hangouts Chat message and splits it in to 4
messagesentstrsplitid = messagesentstrsplit[2] #Takes the row number to be updated from the chat message
myint = int(messagesentstrsplitid) #Converts the number to an int from string
mycursor.execute("SELECT issue FROM tickets WHERE id = %d" % (myint)) #Pulls the relevant record
myresult = mycursor.fetchone()
outputwithchar = json.dumps(myresult)
outputnochar = outputwithchar[2:-2]
updatedcol = outputnochar + ' ' + messagesentstrsplit[3]
mytuple = (updatedcol,)
sqlupdatecom = "UPDATE tickets SET issue = (%s) WHERE id = (%d)"
mycursor.execute(sqlupdatecom, mytuple, myint)
mydb.commit()
print(mycursor.rowcount, "record(s) affected")
updatedcolmsg = 'The ticket with the ID ' + str(myint) + ' has been updated to: "' + updatedcol + '"'
texttoshow = (updatedcolmsg)
在一个例子中,messagesentstr 等于'!update 12 我然后做了这个。'。第 12 行的问题列下已经有 'I have this issue.'。
当 运行 时,我收到“-1 条记录受影响”但没有错误,并且我的记录保持不变。对于问题 ID 12,我希望得到 'I have this issue. I then did this.'。
谢谢
编辑:注意到当我输入一个值而不是 %s 时它工作正常,所以我的字符串可能实际上不是字符串
对于任何有类似问题的人,更改为:
sqlupdatecom = (
"UPDATE tickets SET issue = %s "
"WHERE id = %s")
mycursor.execute(sqlupdatecom, (updatedcol, myint))
mydb.commit()
帮我修好了
如果之前发布过类似的问题(毫无疑问),我深表歉意,但我似乎找不到具有类似问题的问题。我正在使用 Python、SQL 和 Hangouts Chat 构建一个基本的票务系统机器人。聊天部分并不真正相关。在核心层面上,我想做的就是用 Python 脚本更新一个非常基本的 SQL 数据库。我可以很好地插入和查看我的记录。请注意,我也在环聊聊天机器人中使用它,因此我对此表示歉意,同时我的代码目前非常'wide open',因为我正在通过分别查看每个变量来调试它。完成后我会把它全部整理好。
elif "!update" in messagesentstr:
messagesentstrsplit = messagesentstr.split(" ", 3) #Takes string from Hangouts Chat message and splits it in to 4
messagesentstrsplitid = messagesentstrsplit[2] #Takes the row number to be updated from the chat message
myint = int(messagesentstrsplitid) #Converts the number to an int from string
mycursor.execute("SELECT issue FROM tickets WHERE id = %d" % (myint)) #Pulls the relevant record
myresult = mycursor.fetchone()
outputwithchar = json.dumps(myresult)
outputnochar = outputwithchar[2:-2]
updatedcol = outputnochar + ' ' + messagesentstrsplit[3]
mytuple = (updatedcol,)
sqlupdatecom = "UPDATE tickets SET issue = (%s) WHERE id = (%d)"
mycursor.execute(sqlupdatecom, mytuple, myint)
mydb.commit()
print(mycursor.rowcount, "record(s) affected")
updatedcolmsg = 'The ticket with the ID ' + str(myint) + ' has been updated to: "' + updatedcol + '"'
texttoshow = (updatedcolmsg)
在一个例子中,messagesentstr 等于'!update 12 我然后做了这个。'。第 12 行的问题列下已经有 'I have this issue.'。
当 运行 时,我收到“-1 条记录受影响”但没有错误,并且我的记录保持不变。对于问题 ID 12,我希望得到 'I have this issue. I then did this.'。
谢谢
编辑:注意到当我输入一个值而不是 %s 时它工作正常,所以我的字符串可能实际上不是字符串
对于任何有类似问题的人,更改为:
sqlupdatecom = (
"UPDATE tickets SET issue = %s "
"WHERE id = %s")
mycursor.execute(sqlupdatecom, (updatedcol, myint))
mydb.commit()
帮我修好了