Удаление из базы данных выбора в списке - PullRequest
0 голосов
/ 22 марта 2019

У меня в основном есть два скрипта 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 является целым числом первичного ключа в главной таблице книг.

Ответы [ 2 ]

1 голос
/ 22 марта 2019

Вы не определяете BookId.

Для метода delete() требуется параметр с именем id, и вы нигде не используете его в определении.

replace BookIdс id здесь: cur.execute('DELETE * FROM "Books" where BookId=?',(BookId,)) до cur.execute('DELETE * FROM "Books" where BookId=?',(id,))

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=?',(id,))
    conn.commit()
    conn.close()
0 голосов
/ 22 марта 2019

Это не имеет ничего общего с тем, что находится в вашей базе данных, или даже с самим оператором SQL. Вы просто не определили BookId . Этот код вызывает ту же ошибку:

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

Измените BookId на id , как говорит @Powertieke.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...