Maison > développement back-end > Tutoriel Python > Pourquoi ma requête SQL paramétrée génère-t-elle une erreur « Tous les arguments ne sont pas convertis lors du formatage de la chaîne » ?

Pourquoi ma requête SQL paramétrée génère-t-elle une erreur « Tous les arguments ne sont pas convertis lors du formatage de la chaîne » ?

DDD
Libérer: 2024-12-03 14:12:18
original
259 Les gens l'ont consulté

Why Does My Parameterized SQL Query Throw a

Dépannage des erreurs de requête SQL paramétrées : résolution de « tous les arguments ne sont pas convertis lors du formatage de la chaîne »

Lors de la tentative d'exécution de requêtes SQL paramétrées, les développeurs peuvent rencontrez l'erreur : "TypeError : tous les arguments ne sont pas convertis lors du formatage de la chaîne." Ce problème survient généralement lors de l'utilisation du formatage de chaîne pour la requête avec des paramètres insuffisants ou mal formatés.

Pour résoudre cette erreur, il est crucial de s'assurer que chaque espace réservé dans la chaîne formatée correspond à un argument correspondant dans la requête. . Dans l'extrait de code donné :

cur.execute("SELECT * FROM records WHERE email LIKE '%s'", search)
Copier après la connexion

L'espace réservé '%s' dans la requête représente un paramètre à remplacer par la valeur dans la recherche. Cependant, la méthode d'exécution attend une liste ou un tuple contenant les paramètres. Pour remédier à cela, la modification suivante peut être apportée :

cur.execute("SELECT * FROM records WHERE email LIKE %s", [search])
Copier après la connexion

En encapsulant la recherche dans une liste, elle devient un itérable qui peut être décompressé en paramètres individuels. La syntaxe correcte pour exécuter des requêtes paramétrées dans MySQLdb nécessite que les paramètres soient transmis sous forme de liste.

Cet ajustement simple garantit que tous les arguments sont correctement convertis lors du formatage de la chaîne et élimine l'erreur susmentionnée. Alternativement, un tuple (une liste immuable) peut être utilisé à la place d'une liste pour transmettre les paramètres.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal