Python + SQL : récupérer résultats requête

Le problème exposé dans ce sujet a été résolu.

Salut, je débute sur Python et je voulais essayer le couple python/sqlite.

J'ai ce code :

1
2
3
4
5
6
7
8
9
curseur.execute("""SELECT ANNIV_Nom FROM ANNIV WHERE ANNIV_Mois = ? AND ANNIV_JOUR = ?""", (Today_Mois,Today_Jour))
nom = curseur.fetchone()
curseur.execute("""SELECT ANNIV_Prenom FROM ANNIV WHERE ANNIV_Mois = ? AND ANNIV_JOUR = ?""", (Today_Mois,Today_Jour))
prenom = curseur.fetchone()

if nom == None:
    print("Il n'y a pas d'anniversaire aujourd'hui")
else:
    print("C'est l'anniversaire de ",nom, prenom)

Ce qui me donne :

1
C'est l'anniversaire de  ('Test',) ('Test',)

C'est clairement pas dingue comme résultat. J'aurais aimé savoir comment faire disparaitre le (' et le ',) de mes résultats. Existe-t-il une méthode que je n'ai pas envisagé ou que j'ai mal cherché sur mon ami ou je vais devoir supprimer les caractères me gênant avec quelque chose du genre :

1
2
3
nom = str(nom)
nom = nom[2:]
nom = nom[:-3]

Ce qui me donne :

1
C'est l'anniversaire de Test

2 eme point : Peut être est-il préférable de faire la requête en une seule ligne et récupérer les résultats ensuite ?

1
2
curseur.execute("""SELECT ANNIV_Nom, ANNIV_Prenom FROM ANNIV WHERE ANNIV_Mois = ? AND ANNIV_JOUR = ?""", (Today_Mois,Today_Jour))
resultat = curseur.fetchone()

Merci d'avance

+0 -0

C'est clairement pas dingue comme résultat. J'aurais aimé savoir comment faire disparaitre le (' et le ',) de mes résultats. E

fetch te retourne une liste de tuple, fetchone un tuple, donc il te suffit simplement de prendre result = curseur.fetchone puis de dire nom = result[0] par rapport à ta requête. Si tu avais plus de champs (par exemple le nom et le prénom) tu aurais eu un tuple avec 2 colonnes ce qui t'aurait permis de faire directement : nom, prenom = curseur.fetchone().

Cela dit, tu peux toujours jouer avec ça lorsque tu n'as qu'un champ en disant : nom, __ = curseur.fetchone().

Salut,

Pour la première question, le module sqlite te renvoie une liste de tuples (un tuple par ligne récupérée), donc tu es obligé de manipuler ces derniers pour récupérer les valeurs.

Concernant la requête, il est effectivement préférable de n'en faire qu'une seule : tu n'effectueras qu'un seul appel à la base de données donc t'épargneras un aller-retour.

Edit : grilled.

+1 -0

Bonjour,

Je suis débutant sur python, j'aimerais chercher sur un base oracle un identifiant dans le but de trouver une ALARM_CLEARED_DATE_DT et une SEVERITY associés .

J'ai ce code :

cur.execute("""SELECT ALARM_CLEARED_DATE_DT,SEVERITY FROM CMART.T_FV_INCIDENT_RESTORATION WHERE SOURCE_TICKET= '1-5311157' """)

for res in cur: print(res)

qui fonctionne bien.

J'aimerais utilisé un SOURCE_TICKET déja existant dans mon script par exemple quand j'essaye ce code:

test= 1-5311157

cur.execute("""SELECT ALARM_CLEARED_DATE_DT,SEVERITY FROM CMART.T_FV_INCIDENT_RESTORATION WHERE SOURCE_TICKET= ? """, test)

j'ai l'erreur suivante:

TypeError: expecting a dictionary, sequence or keyword args

Pourriez vous m'aider sur ce sujet s'il vous plait ?

Merci par avance.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte