Ссылка на переменную python в операторе SQLite3 DELETE

1

Я пишу функцию для удаления записи из таблицы. Переменная, которую я пытаюсь описать в инструкции delete, является полем ввода Tkinter.

Я получаю переменную с помощью метода .get(), но я не могу передать это в SQLite-заявку без возврата ошибки.

Следующий код является частью фрейма, я только добавил соответствующий код к проблеме

from tkinter import *

import sqlite3

class EditOrdersForm(Frame):

        def __init__(self):

        Frame.__init__(self)
        self.master.title("Edit Orders form:")
        self.pack()

        def displayDelOrderOptions(self):
            self.deleteOrderOptionsLabel = Label(self, text="Enter the Order ID of the order you wish to delete: ").grid(row=numOrders+4, pady=2, sticky=W)
            self.deleteOrderOptionsEntry = Entry(self, bd=3, width=10)
            self.deleteOrderOptionsEntry.grid(row=numOrders+4, pady=5, column=1)
            global orderToDelete
            orderToDelete = self.deleteOrderOptionsEntry.get()
            self.deleteButton = Button(self, text = "Delete this order", command = self.deleteOrder)
            self.deleteButton.grid(row=numOrders+5, pady=5, column=1)
        def deleteOrder(self):
            conn = sqlite3.connect("testdb.db")
            c = conn.cursor()

            c.execute("DELETE FROM orders WHERE orders_id=:1)", (orderToDelete,))

            conn.commit
            c.close()

root = EditOrdersForm()
root.mainloop()

У меня есть проблема с оператором WHERE, как я могу ссылаться на orderToDelete. Я попытался преобразовать его в строку и используя (?) В качестве параметра, но это тоже не сработало.

Теги:
sqlite3
tkinter
where-clause

1 ответ

5
Лучший ответ

Правильный синтаксис параметризованного запроса:

c.execute("DELETE FROM orders WHERE orders_id=?)", (orderToDelete,))

Я считаю, что вам просто нужно вызвать commit вместо ссылки

conn.commit()

  • 0
    Спасибо! После всего этого была глупая ошибка

Ещё вопросы

Сообщество Overcoder
Наверх
Меню