CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[AIDE] Besoin d'aide pour du python/GUI

homagowd
homagowd
Niveau 7
10 octobre 2021 à 13:16:04

Salut les kheys :hap:

J'ai posté ce topic sur le 18-25 et le forum cours et devoirs mais j'ai bidé ou pas eu de réponse, je viens donc ici chercher des pistes :hap:

D'abord je tiens à dire que je suis un noob de la prog j'ai une formation d'ingé mais dans un autre domaine

Je suis en train de penser à un programme avec une application visuelle(GUI)

J'ai un script python qui a pour but de se connecter à la base de données et d'extraire quasiment toute la base de données (+1000 "colonnes" et 20 000 "lignes" sur mongodb ce ne sont pas les lignes et des colonnes mais des fields et des documents) et met les 20 000 lignes avec les colonnes dans un fichier excel

Je veux pouvoir sélectionner les colonnes que je veux afficher in fine avec une interface visuelle (des trucs à cocher quoi :noel:)

Sur mongodb (et par extension sur pymongo la librairie python qui permet d'écrire les requêtes sur python) il y a un opérateur qui s'appelle $project qui permet de choisir les "colonnes"(field) qu'on veut en écrivant

colonne 1 : 1
colonne 2 : 1 
colonne 3 : 1 
....
colonne N : 1

Pour l'instant j'utilise mon script comme suit :

J'ai listé l'ensemble des colonnes colonne i : 1 (oui comme un singe :oui: j'ai listé environ 1500 colonnes) et en fonction de mes besoins quotidiens je mets en commentaire (avec un #) les colonnes dont je n'ai pas besoin.

Je voudrais trouvé un moyen visuel de pouvoir choisir les colonnes en les cochant

Pour l'instant l'idée qui m'est venue est d'avoir un script qui met en commentaire les colonnes que je n'aurais pas sélectionnées
mais après en avoir parlé avec un collègue il m'a dit que ce n'était pas possible car du moment ou on lance un script toutes les lignes sont lancées et donc je peux pas changer le script à postériori

Du coup je suis au point mort et je viens chercher des pistes/idées ici pour avancer

Je dois plusieurs fois par jour choisir une combinaison différente de colonnes à afficher en fonction de mes besoins pour faire des stats sur excel, du coup je voudrais bien rendre ça plus simple

Merci à tous de m'avoir lu et désolé pour le super long post.
Si je me suis mal exprimé je peux reformuler et/ou détailler certains points :hap:

Pseudo supprimé
Pseudo supprimé 10 octobre 2021 à 14:52:28

Salut :hap:

Un truc que tu pourrais faire, ça serait de créer une nouvelle collection "columns" par exmple dans ta base mongo où tu insérerais un document pour chacune de tes 1500 colonnes, sous une forme qui ressemble à :

{
    "name": "column1",
    "checked": True
}

Tu pourrais directement utiliser cette collection pour construire ton interface où cocher ce qui t'intéresse, et tu aurais juste à la mettre à jour ensuite en changeant le champ "checked" pour enregistrer ta sélection.
Ensuite ton script aurais juste à aller regarder dans cette collection pour récupérer les colonnes cochées et construire ton $project :

# construit l'objet du project à partir de la liste des noms de colonne choisis
def buildProjectStage(listColumns):
    ret = {}
    for column in listColumns:
        ret[column] = 1
    return ret

# récupère les colonnes cochées
listColumns = db.columns.find({"checked": True})

# construit l'agrégation
pipeline = [
    {
        ... # tes autres étapes de l'agrégation
    },
    {
        "$project": buildProjectStage(list(map(lambda x: x["name"], listColumns)))
    },
    {
        ... # tes autres étapes de l'agrégation
    }
]

# exécute l'agrégation
resultAggregation = db.collection.aggregate(pipeline)

Y a peut être des erreurs de python là dedans, c'est pas un langage que j'utilise régulièrement, mais c'est au moins pour donner l'idée :noel:

homagowd
homagowd
Niveau 7
10 octobre 2021 à 15:46:06

Merci beaucoup pour ta solution c'est exactement le type de piste que je cherchais :cimer:

Je trouve ton idée super intéressante néanmoins il y a une truc qui me titille c'est que je dois toucher à la base de données, c'est à dire constamment la modifier. J'ai toujours du mal à le faire parce que j'ai peur de tout faire capoter
et aussi je voulais présenter mon futur programme à des vieux collègues (des vrais dinosaures :rire: il préfère utiliser les .csv plutôt que la base de données) mais du coup avec ton idée je ne suis pas sur que plus d'une personne puisse utiliser le programme à la fois

Mais encore une fois merci, je vais creuser ton idée, et voir comment faire la partie cocher une case -> faire passer le "checked" de true à false

J'ai encore à me plonger dans des docus/tutoriels pour les GUI
ça en fait du boulot pour un néophyte comme moi :noel:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment