IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

faire une base de donnée avec interface


Sujet :

Python

  1. #1
    Membre actif Avatar de eponge
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2017
    Messages : 76
    Par défaut faire une base de donnée avec interface
    bonjour je cherche à me faire un répertoire de contacts avec une interface(empêchant donc l'accès au programme). or je me trouve devant un problème j'arrive à entrer les contacts même partiels dans la base mais comment faire des recherches ? chaque contact aura plusieurs champs nom, prénom, surnom, pays, numéros de téléphone. le but étant de faire une base où je pourrais appeler une fiche de contact par n'importe quel ensemble de champs ou même un champs simple. j'ai cherché dans toutes les documentations et je n'ai rien trouvé qui m'a aidé.

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Si la base de données est "sqlite3" ou n'importe quelle autre base de type "SQL", il suffit de chercher en exécutant des scripts SQL dans la base (instruction "SELECT").

    - Doc du module Python "sqlite3" => https://docs.python.org/3/library/sq...module-sqlite3

    - Doc pour la syntaxe du langage SQL de sqlite3 => https://www.sqlite.org/lang.html

    S'il y a une interface graphique: à voir avec cette interface, car pour certaines d'entre elles, il y a une manière spécifique d'accéder à la base de données. Mais le langage SQL est le même.

  3. #3
    Membre actif Avatar de eponge
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2017
    Messages : 76
    Par défaut
    le but étant de mettre de manière optionnelle les champs demandés comment puis je les mettre ? en utilisant une liste ? ou autre chose ? et oui j'utilise sqlite3

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 687
    Par défaut
    Salut,

    Citation Envoyé par eponge Voir le message
    le but étant de mettre de manière optionnelle les champs demandés comment puis je les mettre ? en utilisant une liste ? ou autre chose ? et oui j'utilise sqlite3
    Si vous ne postez pas un peu de code pour illustrer ce que vous racontez, pas facile d'imaginer a quels problèmes vous êtes confronté. Et si vous ne savez pas trop par où commencer, ouvrir un tuto. au chapitre "base de données" s'impose. Dans le Swinnen, c'est ici.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Le principe d'extraction est:

    - ouvrir la base basesql => cnx=sqlite3.connect(basesql) ;

    - ouvrir un curseur => cur=cnx.cursor() ;

    - exécuter la requête SQL d'extraction req (avec l'instruction SQL="SELECT") => cur.execute(req) ;

    - récupérer le résultat => liste = cur.fetchall().

    Le résultat est une "liste de listes", chaque sous-liste représentant un enregistrement sélectionné par la requête.

    On ne peut pas en dire plus sans connaître le contexte et avoir déjà une proposition de code.

  6. #6
    Membre actif Avatar de eponge
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2017
    Messages : 76
    Par défaut
    je sais demander des renseignements à un base de données je l'ai fait plusieurs fois quand je sais ce que je demande à ma base de donnée. mon problème est que je ne sais pas adapter ma demande suivant un nombre de champs inconnus. dans la requête SQL je sais qu'on lui précise le champs (par exemple nom ou prénom) avec les données correspondantes et qu'on lui demande de sortir ce qui correspond à ces données. mais quand je ne sais pas ce que va remplir l'utilisateur (qui n'a pas accès au code du fait de l'interface et donc ne peut taper une demande spécifique) et donc quand je ne sais pas quel(s) champ(s) vont fournir les données pour la requête. comment faire une requête SQL qui puisse s'adapter à ça ? et je n'ai aucun code à fournir vu que ce point n'est pas construit à moins que vous ne vouliez voir comment j'ai construit mon interface. est ce que j'utilise une liste que j'intègre dans l'emplacement des champs et une autre pour les données ? ou un dictionnaire contenant les 2? c'est juste ce point qui me coince

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 687
    Par défaut
    Salut,

    De l'interface utilisateur doit sortir les champs qui ont été renseignés et, pour chacun d'eux, la valeur donnée par l'utilisateur. A partir de là, on a une liste de champs C1, C2, C3,... et une liste de valeurs V1, V2, V3, ...associées et on peut construire une requêtes SQL.
    Si on a que des valeurs sans avoir les champs correspondants, çà va être compliqué.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre actif Avatar de eponge
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2017
    Messages : 76
    Par défaut
    justement le programme récupère les informations mises par l'utilisateur dans les champs et ensuite fait (enfin devrait faire) une requête SQL disant j'ai tel champ avec telle information dedans. c'est la requête SQL qui coince.je pensais tout mettre dans une seule requête après avoir tout réuni

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 687
    Par défaut
    Citation Envoyé par eponge Voir le message
    c'est la requête SQL qui coince.je pensais tout mettre dans une seule requête après avoir tout réuni
    La requête SQL est juste une chaîne de caractères à construire en fonction des champs qui sont récupérés. Ça ne présente pas de difficultés particulières, en tous cas, si vous ne montrez pas ce que vous avez essayé de faire, on ne comprendra pas celles que vous rencontrez.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Comme le dit wiztricks, tu n'en dis pas assez pour qu'on comprenne ce qui coince.

    Imaginons: j'ai une base de données qui contient une table "matable" qui, elle-même, contient 3 champs qui s'appellent: "nom", "adresse", "age". Extraire sélectivement le nom et l'age demandera la requête suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT nom, age from matable"
    Il suffit de faire exécuter cette requête conformément à mon précédent message.

    Comme cette requête n'est jamais qu'une chaine de caractères, on peut paramétrer chacun des mots pour lui faire trouver ce qu'on cherche.

    L'instruction SQL "SELECT" permet des recherches plus complexes comme le montre sa doc. Par exemple, on peut ajouter des conditions avec "WHERE" qui vont filtrer les enregistrements trouvés, ou demander à ce que ces enregistrements trouvés soient présentés dans un certain ordre avec "ORDER BY". Voir le lien vers sqlite3 que j'ai déjà donné.

  11. #11
    Membre actif Avatar de eponge
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2017
    Messages : 76
    Par défaut
    le programme que je cherche à faire parle de fiches. chacune avec les renseignements sur une personne. sur ces fiches il y a plusieurs champs nom, prénom, téléphone, adresse, etc. . je sais comment remplir ces fiches mais ce que j'aimerais savoir c'est comment par exemple faire en sorte de retrouver une fiche en tapant juste un numéro de téléphone ou en tapant un nom et un prénom, ou une adresse. donc faire une requête SQL avec un nombre de champs variables sans à avoir à changer le code à chaque fois en bref une requête SQL qui s'adapte à la demande. quant à mon code vous voulez vraiment savoir comment est organisée l'interface ou les autres fonctions? parce que la fonction recherche il n'y a rien si juste le bouton qui ne conduit nulle part.

  12. #12
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Avec l'exemple que j'ai donné, et comme je l'ai suggéré, il suffit d'ajouter "WHERE" au "SELECT" pour que soit renvoyé le ou les enregistrement(s) qui correspond(ent):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nom = 'Bob'
    cur.execute('SELECT nom, adresse, age FROM matable WHERE nom="%s" ' % (nom,))
    On peut faire des recherches plus complexes, mais essaie déjà ça.

  13. #13
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 687
    Par défaut
    Salut,

    quant à mon code vous voulez vraiment savoir comment est organisée l'interface ou les autres fonctions?
    Pas du tout, mais si vous avez bien compris que le seul soucis était de construire une chaine de caractères à partir des champs (une liste de chaines de caractères donnés par l'utilisateur), vous devriez pouvoir écrire quelque chose pour construire la chaine de caractère/requête SQL à effectuer i.e. en partant de champs/valeurs:
    C = C1, C2, C3
    V = V1, V2, V3
    et déjà fabriquer "SELECT * FROM matable WHERE C1=? AND C2=? AND C3=?".
    A défaut, soit vous pensez qu'il faut écrire autre chose, soit vous exposez les difficultés que çà vous pose (et ce que vous avez essayé)

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  14. #14
    Membre actif Avatar de eponge
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2017
    Messages : 76
    Par défaut
    mon problème c'est la ligne "SELECT * FROM matable WHERE C1=? AND C2=? AND C3=?" je dois faire un code où je ne suis pas sûr que C1=? existe ou C2 ou C3 donc je dois faire une ligne qui s'adapte aux informations que l'utilisateur entre. il pourra en avoir plusieurs ou même une seule. j'ai donc un ensemble de if, elif qui permettent de savoir les informations que met l'utilisateur et de les condenser dans deux listes ou n'importe quoi. une qui serait les C1,C2 et l'autre les V1,V2,V3.

  15. #15
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Et en remplaçant AND par OR, les lignes seraient sélectionnées si AU MOINS l'une des conditions C1=V1, etc... était vraie.

    Si ça ne suffit pas: il y a des tas de solutions possibles, mais bien qu'on en soit déjà au 15ème message, je ne suis pas sûr d'avoir bien compris ce que tu cherches: pourrais-tu donner un exemple simple, même bidon, de lignes avec ce que tu souhaites sélectionner et le contraire?

  16. #16
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 687
    Par défaut
    Citation Envoyé par eponge Voir le message
    mon problème c'est la ligne "SELECT * FROM matable WHERE C1=? AND C2=? AND C3=?" je dois faire un code où je ne suis pas sûr que C1=? existe ou C2 ou C3 donc je dois faire une ligne qui s'adapte aux informations que l'utilisateur entre.
    C'est l'interface utilisateur qui retourne C1, C2, C3 et les valeurs V1, V2, V3 associées (et éventuellement vides). Côté interface, c'est généralement un formulaire qui affiche Nom, Prenom, Adresse,... (les C1, C2, C3,...) avec en face une entrée remplie par l'utilisateur (les V1, V2, V3).
    Après vous pouvez imaginez une interface en langage naturel mais à la fin, pour retrouver quelque chose dans la base de donnée, il faudra toujours savoir si on recherche un nom, un prénom, une adresse,... ou une combinaison de... et donc construire une requête à partir de C1, C2,... et des V1, V2,... associés.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  17. #17
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2014
    Messages : 15
    Par défaut
    Il suffit de faire une requete de base

    SI nom est pas donnée il vaut None

    et sinon tu le fais apprendre dans ta requete avec la cocaténation des str

    Je le fais dans mon projet ChoixEcole .

  18. #18
    Membre actif Avatar de eponge
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2017
    Messages : 76
    Par défaut
    bonne année j'ai réussi merci de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connexion a une base de données avec les interfaces Swing
    Par diengkals dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 09/10/2013, 13h39
  2. [XSL]Connexion à une base de données avec XSL
    Par muad'dib dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 07/02/2006, 10h06
  3. Lier une feuille à une base de donnée ( avec ADO)
    Par christiano dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/12/2005, 15h55
  4. Modifier le nom d'une base de donnée avec erreur sy
    Par mmn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/11/2003, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo