Kiedy uruchamiam ten kod:

delCard = input('Which card do you want to delete?: ')
c.execute ("DELETE from cards WHERE ROWID = int(delCard)");
conn.commit()

Otrzymuję ten błąd:

Traceback (most recent call last):
  File "H:\cc7.py", line 74, in <module>
    deleteAcard()
  File "H:\cc7.py", line 42, in deleteAcard
    c.execute ("DELETE FROM cards WHERE ROWID = idrow");
sqlite3.OperationalError: no such column: idrow
0
Jim Sepello 19 listopad 2019, 15:26
Nie rozumiem, że jak to zrobiłem, z twoją pomocą '''(c.execute ("DELETE from cards WHERE ROWID = ?", delCard);''' działa, ALE: ROWID jest z definicji liczbą całkowitą a w moim obecnie działającym programie delCard jest str tj.: wyjście z programu
 – 
Jim Sepello
19 listopad 2019, 16:09

2 odpowiedzi

c.execute ("DELETE from cards WHERE ROWID = ?", int(delCard));
0
MCH 19 listopad 2019, 15:33
Kiedy uruchamiasz execute, oczekuje ciągu jako zapytania dla pierwszego argumentu, wtedy drugi argument może być pojedynczą wartością, krotką wartości lub listą, która odpowiada liczbie ? w ciąg zapytania.
 – 
MCH
19 listopad 2019, 19:22

Spróbuj tego:

c.execute ("DELETE from cards WHERE ROWID = {}".format(int(delCard)));
0
Mehrdad Pedramfar 21 listopad 2019, 15:19