Я не могу обновить базу данных SQL на Python, но могу добавить новые строки - PullRequest
0 голосов
/ 27 марта 2019

Я прошу прощения, если подобное было опубликовано ранее (без сомнения, есть), но я не могу найти вопрос, который имеет аналогичную проблему. Я создаю базового бота системы тикетов, используя Python, SQL и Hangouts Chat. Часть чата не очень актуальна. На уровне ядра все, что я пытаюсь сделать, это обновить очень простую базу данных SQL с помощью скрипта Python. Я могу вставлять и просматривать мои записи в порядке. Обратите внимание, что я также использую это в чате чата Hangouts, поэтому я извиняюсь за это, а также за то, что мой код в настоящее время очень широко открыт, так как я отлаживаю его, просматривая каждую переменную в отдельности. Я свяжу все это, когда закончу.

        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 уже будет иметь «У меня есть эта проблема». под вопросом колонку.

При запуске я получаю «-1 запись (и)», но ошибок нет, и моя запись остается прежней. Я ожидаю получить «У меня есть эта проблема. Я тогда сделал это. для номера вопроса 12.

Спасибо

РЕДАКТИРОВАТЬ: заметил, что он работает нормально, когда я помещаю значение вместо% s, так что моя строка, вероятно, на самом деле не строка

1 Ответ

0 голосов
/ 29 марта 2019

Для тех, у кого похожая проблема:

sqlupdatecom = (
                "UPDATE tickets SET issue = %s "
                "WHERE id = %s")
                mycursor.execute(sqlupdatecom, (updatedcol, myint))
                mydb.commit()

исправлено для меня

...