Python PostGrsql PB requete

Python PostGrsql PB requete - Python - Programmation

Marsh Posté le 04-03-2025 à 11:02:29    

Bonjour
Cette requete executée en python ne parvient pas à effacer une ligne dans ma BDD
Or quand je fais un print de la ligne et que je la colle dans PG en SQL, ça efface ma ligne
 
What the Fu??k ?
Encore un coup de Trump ?
 

Code :
  1. if nbliens == 0:
  2.                     print("effacement..." )
  3.                     ligne = "%s%s%s" % ("DELETE FROM base_des_liens WHERE URL = '", str(adresse), "';" )
  4.                     try:
  5.                         cursor.execute(ligne)
  6.                     except Exception as err:
  7.                         print(f"{err=}, {type(err)=}" )
  8.                     else:
  9.                         print("ok" )


 
==>
 

Code :
  1. effacement...
  2. ok
  3. 1766004 LIGNES A TRAITER
  4.    ANALYSE DE LIENS DE  https://xxxxxxx
  5.    LIGNE  54 DEPUIS DEMARRAGE - DESC
  6. 10:59:11
  7. NB LIENS  0
  8. effacement...
  9. ok
  10. 1766004 LIGNES A TRAITER

Reply

Marsh Posté le 04-03-2025 à 11:02:29   

Reply

Marsh Posté le 04-03-2025 à 11:17:14    

Regarde tes logs SQL pour voir l'erreur, ou affiche ta requête en debug.
Je ne connais pas trop Python et je ne sais pas ce que tu utilises comme interface avec ta DB donc cherche un peu :
https://stackoverflow.com/questions [...] d-ms-acces
 
En tout cas cette ligne me semble vraiment bizarre pour une syntaxe de cmd sql "préparé": ligne = "%s%s%s" % ("DELETE FROM base_des_liens WHERE URL = '", str(adresse), "';" )
 
Je me serais plutôt attendu à un truc du genre execute('DELETE FROM base_des_liens WHERE URL =%s', (adresse))


---------------
D3
Reply

Marsh Posté le 04-03-2025 à 11:21:26    

oui mais je crée plein de lignes de codes et je les apperlle ensuite par execute
Merci !


---------------
http://www.ypikay.com
Reply

Marsh Posté le 04-03-2025 à 11:25:57    

Tu as peut être un double échappement avec ton str() + les ' dans ta requête, pour en être sur il faut que tu vois la requête qui est vraiment envoyé au serveur...


---------------
D3
Reply

Marsh Posté le 04-03-2025 à 13:23:11    

le moindre espace , guillemet ou retour a la ligen dans ton adresse cassera ta requete
c'est une enorme faille de sécurité
utilise des requetes préparées


---------------

Reply

Marsh Posté le 07-03-2025 à 16:23:14    

Si j'étais toi, je me renseignerais d'urgence sur la notion "d'injection SQL".


---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 07-03-2025 à 16:27:23    

Reply

Marsh Posté le 08-03-2025 à 15:41:10    

flo850 a écrit :

le moindre espace , guillemet ou retour a la ligen dans ton adresse cassera ta requete
c'est une enorme faille de sécurité
utilise des requetes préparées


Et ça implique juste d'utiliser execute correctement:

Code :
  1. cursor.execute("DELETE FROM base_des_liens WHERE URL = %s", [addresse])



Message édité par masklinn le 08-03-2025 à 15:44:08

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
Reply

Marsh Posté le 09-03-2025 à 17:00:24    

grand classique toujours aussi bien. :lol:


---------------
Ne laissez pas mourir vos sujets en cours de route!
Reply

Marsh Posté le 09-03-2025 à 23:34:17    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed