Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gerer les tuples (sqlite fetchall)

récupérer seulement un element après un ORDER BY ... DESC

22 novembre 2021 à 9:14:43

Bonjour à tous,

Encore moi :pirate:

Je sais qu'en ce moment je demande beaucoup d'aide, et je m'excuse pour les plus téméraire d'entre vous, qui arpentent sans relâche ce forum.

J'ai seulement une question. Est-il possible de ne récupérer que le pseudo d'un joueur dans le return d'un fetchall -> tuple ?

En gros le fetchall me renvoie les données comme ca : (4, 'Pierre', 19, 0) Et moi je voudrais seulement récupérer le pseudo (Pierre) et le score (19).

Au pire des cas j'afficherais le tout, c'est pas gênant, c'était simplement pour épurer ma fenêtre.

Encore une fois,merci beaucoup !

Cela faisait longtemps que je me posait la question de la gestion des tuples, rien trouvé qui me satisfasse sur google...

Bonne fin de journée à vous !!

  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2021 à 9:21:23

Un tuple est indexable comme liste et chaînes de caractères. Revoir les chapitrss qui en parlent de votre tuto. préféré serait ben plus bénéfique que de ne pas savoir quoi chercher sur Internet.
  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2021 à 9:53:17

mps a écrit:

Un tuple est indexable comme liste et chaînes de caractères. Revoir les chapitrss qui en parlent de votre tuto. préféré serait ben plus bénéfique que de ne pas savoir quoi chercher sur Internet.


Oui oui, je sais que c'est indexable, seulement on me renvoi un liste de tuples :

[(4, 'Pierre', 19, 0), (50, 'JFPE', 16, 0), (3, 'andre', 10, 0), (1, 'Mat', 0, 0), (2, 'Tom', 0, 0), (5, 'JP', 0, 0)]

Ainsi, si j'affiche classement[0], j'obtient (4, 'Pierre', 19, 0). Seulement je voudrais afficher les éléments 'PIerre" et '19' qui sont DANS le tuple. Existe-t-il un moyen de le faire ?

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
22 novembre 2021 à 11:51:14

Salut !
tpls = [(4, 'Pierre', 19, 0), (50, 'JFPE', 16, 0), (3, 'andre', 10, 0), (1, 'Mat', 0, 0), (2, 'Tom', 0, 0), (5, 'JP', 0, 0)]
>>> tpls[0][1]
'Pierre'
>>> tpls[0][2]
19
>>> test = [([(21213, 2524543)], [('abcd', 'efgh', 'zzzz')])]
>>> test[0][1][0][2]
'zzzz'
>>> test[-1][-1][-1][-1]
'zzzz'

-
Edité par Anonyme 22 novembre 2021 à 11:54:05

  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2021 à 14:41:43

FunlY-Fla a écrit:

 Existe-t-il un moyen de le faire ?

Une liste de listes est doublement indexables comme une sorte de tableau... Et c'est avec ce genre de structure de données qu'on se lance à apprendre à faire des boucles imbriquées.
  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2021 à 15:53:47

commence peut-être par adapter ta requête initiale, si tu demandes tous les champs, le fetch te renvoie tous les champs, si tu filtres le retour avec une condition (where ..) tu auras la réponse filtrée correspondante
  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2021 à 17:18:47

umfred a écrit:

commence peut-être par adapter ta requête initiale, si tu demandes tous les champs, le fetch te renvoie tous les champs, si tu filtres le retour avec une condition (where ..) tu auras la réponse filtrée correspondante


On demande tous les champs/colonnes avec un SELECT * FROM... . Si on ne veut que les champs A et B, on remplacera le '*' par SELECT A, B FROM...

Le WHERE n'a aucun impact sur le nombre de colonnes retournées mais peut réduire le nombre de lignes (de tuples retournés): seront retournées celles qui vérifient certaines conditions.

  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2021 à 18:20:36

Les tuples se comportent à peu près comme les listes. Cependant, ils sont immuables (non modifiables).
-
>>>                                                                                                                     
>>> L=[1, 2, 's'];L                                                                                                     
[1, 2, 's']                                                                                                             
>>> print(*L)                                                                                                           
1 2 s                                                                                                                   
>>> L[2]='a';L                                                                                                          
[1, 2, 'a']                                                                                                             
>>> T=(1, 2, 's');T                                                                                                     
(1, 2, 's')                                                                                                             
>>> print(*T)                                                                                                           
1 2 s                                                                                                                   
>>> T[2]='z';T                                                                                                          
Traceback (most recent call last):                                                                                      
  File "<stdin>", line 1, in <module>                                                                                   
TypeError: 'tuple' object does not support item assignment                                                              
>>> type(T[2])                                                                                                          
<class 'str'>                                                                                                           
>>>
  • Partager sur Facebook
  • Partager sur Twitter

Le Tout est souvent plus grand que la somme de ses parties.