Python 从数据库中删除列表框中的选择

Python 从数据库中删除列表框中的选择,python,sqlite,Python,Sqlite,我基本上有两个python脚本,一个用于前端,另一个用于后端。在前端,我有以下内容: def delete_command(): back.delete(selected_tuple[0]) 因此,基本上是单击列表框中的一个条目,然后在后端脚本上,它具有数据库调用(sqllite3) 但我不断地得到一个错误: cur.execute('DELETE * FROM "Books" where BookId=?',(BookId,)) NameError: name 'BookId' i

我基本上有两个python脚本,一个用于前端,另一个用于后端。在前端,我有以下内容:

def delete_command():
    back.delete(selected_tuple[0])
因此,基本上是单击列表框中的一个条目,然后在后端脚本上,它具有数据库调用(sqllite3)

但我不断地得到一个错误:

cur.execute('DELETE * FROM "Books"  where BookId=?',(BookId,))
NameError: name 'BookId' is not defined

数据库已经存在,因此它不是动态创建的。不确定为什么它认为
BookID
列未定义,
BookID
是主Books表上的主键整数。

这与数据库中的内容无关,甚至与SQL语句本身无关。您只是没有定义图书ID。此代码会导致相同的错误:

class Cur:
    def execute(self, statement, values):
        pass

cur = Cur()
cur.execute('DELETE * FROM "Books"  where BookId=?',(BookId,))
结果:

Traceback (most recent call last):
  File "...", line 10, in <module>
    cur.execute('DELETE * FROM "Books"  where BookId=?',(BookId,))
NameError: name 'BookId' is not defined
回溯(最近一次呼叫最后一次):
文件“…”,第10行,在
cur.execute('DELETE*自BookId=?'的“Books”中,(BookId,))
NameError:未定义名称“BookId”

如@Powertieke所说,将BookId更改为id

您没有定义
BookId

delete()
方法需要一个名为
id
的参数,您在定义中的任何地方都没有使用它

BookId
替换为
id
cur.execute('DELETE*FROM“Books”,其中BookId=?',(BookId,))
cur.execute('DELETE*FROM“Books”,其中BookId=?',(id,))

def删除(id):
BASE_DIR=os.path.dirname(os.path.abspath(_文件__))
db_path=os.path.join(BASE_DIR,“AVDatabase.db”)
conn=sqlite3.connect(db_路径)
cur=连接光标()
cur.execute('从BookId=?'的“Books”中删除*,(id,))
康涅狄格州提交
康涅狄格州关闭

我建议您使用sqlalchemy。我还没有使用sqlalchemy。BookId(变量vs表列)在哪里定义?这似乎是在抱怨变量,而不是SQL语句的内容。这是一个编译时错误,不是运行时错误,对吗?在我看来,这个符号根本没有定义。Bookid只定义为一个从列表框填充的条目小部件。基本上,我在列表框中选择了一个条目,并希望将BookID列从Books表传递给Delete语句。BookID_text=IntVar()entry1=entry(window,textvariable=int(float(BookID_text.get()))entry1.grid(row=1,column=1)谢谢你这么做,Danke。
Traceback (most recent call last):
  File "...", line 10, in <module>
    cur.execute('DELETE * FROM "Books"  where BookId=?',(BookId,))
NameError: name 'BookId' is not defined