Requete sql contenant une variable date
ami2284
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
ami2284 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
ami2284 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je veux exécuter cette requête en python qui me donne des résultats selon la date d'hier, si je fais directement la date ça s’exécute , mais avec la variable non:
before_one_days = date_today - no_of_days
print("Before Four Days:", before_one_days)
try:
connection = psycopg2.connect(database="testbd", user="postgres", host="localhost",
password="admin", port="5432")
cursor = connection.cursor()
cursor.execute("SELECT * FROM datafwi where datefwi='+before_one_days +'")
Merci pour votre aide
je veux exécuter cette requête en python qui me donne des résultats selon la date d'hier, si je fais directement la date ça s’exécute , mais avec la variable non:
before_one_days = date_today - no_of_days
print("Before Four Days:", before_one_days)
try:
connection = psycopg2.connect(database="testbd", user="postgres", host="localhost",
password="admin", port="5432")
cursor = connection.cursor()
cursor.execute("SELECT * FROM datafwi where datefwi='+before_one_days +'")
Merci pour votre aide
6 réponses
-
Bonjour,
Que vaut before_one_days ?
Si le format de la date est bon, es-tu certain que dans ta table il y a au moins une ligne avec la colonne datefwi à cette date ? -
before_one_days veut dire la date systéme-1 ça veut dire la date d'hier.
je pense que le problème vint de l’écriture de la variable dans la requête -
quand je met SELECT * FROM datafwi where datefwi='2020-01-01'c'est bon
mais quand je mets la variable:
Voici ce que ça donne comme erreur
Error while fetching data from PostgreSQL ERREUR: syntaxe en entrée invalide pour le type date : « +before_one_days + »
LINE 1: SELECT * FROM datafwi where datefwi='+before_one_days +' -
j'écris comment la requête
cursor.execute("SELECT * FROM datafwi where datefwi='+before_one_days +'")??? -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
ok je suis desolée voici ce que ça donne leprint("SELECT * FROM datafwi where datefwi='+before_one_days +'")
Error while fetching data from PostgreSQL ERREUR: la colonne « before_one_days » n'existe pas
LINE 1: SELECT * FROM datafwi where datefwi=before_one_days-
Bonjour,
J'ai essayé au maximum de te faire comprendre ce qu'il se passe, mais manifestement tu as du mal ^^
Pourtant tu vois bien que ton sql n'est pas bon.
LINE 1: SELECT * FROM datafwi where datefwi=before_one_days
Cela signifie que postgresql cherche à tester une égalité entre ta colonne datefwi et une colonne before_one_days qui n'existe pas dans ta table.
On peut donc conclure que ta concaténation n'est pas bonne.
Alors on corrige.
cursor.execute("SELECT * FROM datafwi where datefwi='" +before_one_days + "'")
Et pour éviter ce genre de désagrément, on préfère utiliser format.
cursor.execute("SELECT * FROM datafwi where datefwi='{}'".format(before_one_days))
Mais comme je t'ai signalé, execute peut prendre des valeurs à passer à la requête, il est plus que préférable d'utiliser cela.
http://initd.org/psycopg/docs/usage.html#passing-parameters-to-sql-queries
Qui donnerait donc pour toi.
cursor.execute("SELECT * FROM datafwi where datefwi=%", (before_one_days,))
Cette syntaxe est à privilégier absolument.
-
-
Merci beaucoup ça a marché , desolée encore une fois.