0
votes

Erreur: insérer une erreur de commande avec la base de données comme sqlite

Je insère des données dans SQLite à l'aide de Python

base de données_tasks.bookid est une variable de classe p> xxx pré>

Je reçois une erreur avec une commande d'insertion. P >

sql= "INSERT INTO Book_database VALUES(" + database_tasks.bookId + "," + name + "," + writer + ")"


0 commentaires

3 Réponses :


0
votes
  • Cela ressemble à votre chargeur est int . Jeter à str avant de combiner. xxx

0 commentaires

0
votes

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 xxx

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.


0 commentaires

1
votes

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:
        ...


0 commentaires