繁体   English   中英

在SQLite3 DELETE语句中引用python变量

[英]Referring to a python variable in SQLite3 DELETE statement

我正在编写一个从表中删除记录的函数。 我试图在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。 我尝试将其转换为字符串并使用(?)作为参数,但这也不起作用。

参数化查询的正确语法是:

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

我相信你只需要调用commit而不是引用它

conn.commit()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM