我基本上有两个python脚本,一个用于前端,另一个用于后端。在前端我有:
def delete_command():
back.delete(selected_tuple[0])
因此,基本上单击列表框中的一个条目,然后在后端脚本上,它有一个数据库调用(sqllite3)
def delete(id):
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
db_path = os.path.join(BASE_DIR, "AVDatabase.db")
conn=sqlite3.connect(db_path)
cur=conn.cursor()
cur.execute('DELETE * FROM "Books" where BookId=?',(BookId,))
conn.commit()
conn.close()
但我一直有个错误:
cur.execute('DELETE * FROM "Books" where BookId=?',(BookId,))
NameError: name 'BookId' is not defined
数据库已经存在,所以它不是动态创建的,不知道为什么它认为BookID
列没有定义,BookID
是主Books表上的主键整数
您没有定义
BookId
delete()
方法需要一个名为id
的参数,而您在定义中的任何地方都没有使用它用
id
替换BookId
:cur.execute('DELETE * FROM "Books" where BookId=?',(BookId,))
到cur.execute('DELETE * FROM "Books" where BookId=?',(id,))
这与数据库中的内容无关,甚至与SQL语句本身无关。您只是还没有定义BookId。此代码会导致相同的错误:
结果:
如@Powertieke所说,将BookId更改为id
相关问题 更多 >
编程相关推荐