76 votes

Problèmes liés à Python MySQLdb (TypeError : %d format : a number is required, not str)

J'essaie d'effectuer l'opération d'insertion suivante :

cursor.execute("""
                    insert into tree (id,parent_id,level,description,code,start,end)
                    values (%d,%d,%d,%s,%s,%f,%f)
                    """, (1,1,1,'abc','def',1,1)
                    )

La structure de ma table MYSQL est la suivante :

id int(255),
parent_id int(255),
level int(11),
description varchar(255),
code varchar(255),
start decimal(25,4),
end decimal(25,4)

Cependant, lorsque j'exécute mon programme, j'obtiens l'erreur suivante

" Fichier "/usr/lib/pymodules/python2.6/MySQLdb/cursors.py", ligne 151, in execute requête = requête % db.literal(args)

TypeError : %d format : un nombre est requis, pas une chaîne de caractères".

-1voto

jkmali Points 1

Chaque fois que vous voyez ce type d'erreurs, vous devez utiliser la fonction type() pour vérifier le type des valeurs ou des variables...., et vous verrez que le type est - 'str'. Cela signifie que python prend toutes les valeurs dans des chaînes (par défaut, le type de données est string). C'est pourquoi l'erreur dit que %d est pour les nombres, pas pour les chaînes de caractères. Considérez donc %s dans python pour tous les types de champs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X