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

SQLite Discussion :

Recherche Aléatoire de lignes dans une table !


Sujet :

SQLite

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Recherche Aléatoire de lignes dans une table !
    Bonjour,
    J'ai un petit soucis pour lire une ligne de table de manière aléatoire.

    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    import sqlite3
    import random
     
    conn=sqlite3.connect('baseTaquin.db3')
    cur=conn.cursor()
    # comptage Nombre de lignes d'une table (COUNT(*) ne fonctionnait pas ! j'ai trouvé ce bout de code qui fonctionne)
    #========================================================================
    cur.execute("select * from Articles")
    resultat=cur.fetchall()
    nblignes=len(resultat)
    print (nblignes)
     
    # tirage N° de ligne aléatoire de la table (ce bout de code fonctionne !)
    #===========================================
    alea=random.randint(1,nblignes) 
    print("alea=",alea)
     
    # Recherche du N° de la ligne tirée au hasard (ERREUR ! pourquoi ?)
    #==========================================
    resultat=cur.execute("select * from Articles where IDArticles=alea") # ligne 30
    # print("Id articles","Abrev"," NomC","genre","nombre")
    for row in resultat:
        print(" ",row[0],"        ",row[1],"  ",row[2],"  ",row[3],row[4],"\n")
     
    conn.close()
    MESSAGE d'ERREUR:
    File "G:\PROGRAMMATION\PYTHON\THONNY IDE\MES PROGRAMMES\CrazymoTaquinBDD.py", line 30, in <module>
    resultat=cur.execute("select * from Articles where IDArticles=alea")
    sqlite3.OperationalError: no such column: alea
    Quand je mets un Numéro de ligne à la main, par exemple IDArticles=4, il me sort bien la bonne ligne !
    Pourtant la variable "alea" est bien un entier entre 1 et 7 (7 étant le Nb de lignes de ma table).
    Je ne vois pas où est le problème. J'ai cherché sur internet. Il y a des solutions batardes. Mais elles ne fonctionnent pas !!
    Merci de me dire s'il y a une solution ??
    A BIENTÔT !

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    C'est plutôt un problème python, il faut envoyer votre variable alea dans la requête comme ceci :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat=cur.execute("select * from Articles where IDArticles=?", alea)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bonjour Waldar !

    La solution que vous m'avez apporté, je l'ai déjà essayé. Je l'ai quand incluse dans mon code pour voir.
    Et j'ai le beau message d'erreur suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Traceback (most recent call last):
      File "G:\PROGRAMMATION\PYTHON\THONNY IDE\MES PROGRAMMES\CrazymoTaquinBDD.py", line 31, in <module>
        resultat=cur.execute("select * from Articles where IDArticles=?",alea)
    ValueError: parameters are of unsupported type
    Pourquoi le type de la variable (alea) n'est pas supporté ?? c'est un entier comme celui de la colonne IDArticles.

    Je code avec Thonny 3.2.7 et jusqu'à maintenant je n'avais pas de problèmes particuliers.
    Mais, depuis que je travaille avec SQlite3, il y a pas mal d'instructions qui ne fonctionnent pas correctement.
    comme COUNT(*) qui ne retourne pas le nombre de lignes d'une table.

    Je ne vois pas ce que je peux faire ??
    A BIENTÔT ! pour votre éclairage....

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Re-Bonjour,

    J'ai trouvé la solution dans le forum de developpez.net par le pseudo: Tyrtamos du 13/4/2012
    lors de son explication sur le codage d'une variable dans un SELECT, sa solution ne me convenait pas.
    Puis deux lignes plus loin, il a montrer un code un peu bizarre entre parenthèses: ,(variable,)
    je l'ai essayé, et ça marche !! Ouf !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat=cur.execute("select * from Articles where IDArticles=?",(alea,))
    Je vous remercie quand même pour votre intervention !!
    A BIENTÔT !! Car j'aurais certainement d'autres problèmes....

Discussions similaires

  1. Rechercher une ligne dans une table pour mot de passe
    Par CrasherSEP dans le forum VBA Access
    Réponses: 6
    Dernier message: 25/03/2014, 17h43
  2. Réponses: 2
    Dernier message: 26/01/2010, 14h50
  3. Ajout/Suppression dynamique des lignes dans une table
    Par codexomega dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2005, 18h50
  4. Réponses: 8
    Dernier message: 20/06/2005, 15h10
  5. N° de ligne dans une table triée ?
    Par andremarco dans le forum Langage SQL
    Réponses: 6
    Dernier message: 24/06/2004, 17h19

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