Je insère des données dans SQLite à l'aide de Python
base de données_tasks.bookid est une variable de classe p> Je reçois une erreur avec une commande d'insertion. P > sql= "INSERT INTO Book_database VALUES(" + database_tasks.bookId + "," + name + "," + writer + ")"
3 Réponses :
int code>. Jeter à str code> avant de combiner. Li>
xxx pré> ul> L'erreur est assez explicite - vous essayez de concaténer un entier à une chaîne.
Mon hypothèse est que la base de données_tasks.studentid est une int, la modification de votre requête sur p> résoudrait cela, sachez cependant que si cela est du public, il serait Soyez très facile à exploiter cela, je vous recommanderais de valider complètement la contribution ou de modifier votre approche de ce problème. P> p>
Vous devriez jamais strud> Construire une chaîne de requête comprenant des valeurs pour insérer de cette façon mais utilisée des requêtes paramétrées. C'est un anti-motif qui a été utilisé depuis des décennies pour construire des attaques d'injection SQL. Vous devez utiliser: if dbname == "Book_database":
database_tasks.bookId += 1
c.execute("INSERT INTO Book_database VALUES(?,?,?)",
(database_tasks.bookId, name, writer))
else:
...