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 :

[adodbapi]Effectuer des requêtes SQL sur un fichier dbf


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 8
    Par défaut [adodbapi]Effectuer des requêtes SQL sur un fichier dbf
    Bonjour,

    (Je précise que je me suis mise récemment à Python et que la programmation n'est pas le cœur de mon métier, loin de là...)

    Jusqu'à présent j'utilisais VB6 pour coder des petites moulinettes pour traiter des fichiers de données (les convertir dans un autre format, reformater certains champs et faire quelques petits calculs simples).
    La grande majorité des fichiers qui ressortent de mes moulinettes sont des fichiers dbf.

    Je voudrais transposer mes moulinettes en Python et je suis arrivée assez facilement à utiliser la bibliothèque dbfpy pour créer des dbf et les remplir. Seulement ça ne me suffit pas...
    J'ai besoin de faire des calculs sur des champs et mettre à jour les dbf à partir des résultats de ces calculs (rien de bien compliquer : par exemple faire une moyenne de valeur pour chaque semaine d'une année et réinjecter cette moyenne dans la table des valeurs journalières).

    Je suis donc allée voir du côté de adodbapi en me disant "chouette ! j'utilisais ADO avec vb6, je connais !". Et bien patatras, je n'arrive pas à faire la moindre requête sur un dbf avec...
    Voila le bout de code que j'essaie de faire marcher dans un premier temps pour tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    dBaseFolder = 'D:\\OUTILS\\exportBanqueHydro\\test'
    dBaseTable = 'O8231530.dbf'
     
    db = adodbapi.connect ("Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" + dBaseFolder + ";")
    q = db.cursor ()
    q.execute("SELECT * FROM " + dBaseTable)
    print str(q.rowcount)
    q.close ()
    Le "print" me renvoie un vilain -1 alors que mon dbf est bien rempli.
    J'ai testé d'autres connection string mais rien n'y fait.

    J'ai beaucoup de mal à trouver de l'aide sur internet si bien que je me demande si je suis la seule au monde à vouloir gérer des dbf en python !
    Suis-je vraiment seule au monde ?
    Il y a peut-être d'autres bibliothèques qui me permettrait de faire tout ça... Si quelqu'un a une idée, je suis preneuse !

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    bonjour ,essaye de faire ça apres ta requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for ligne in q.fetchall():
    print ligne
    pour voir tes enregistrements

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    Je ne sais pas quel type de curseur est utilisé; mais il y a des chances que ce soit un curseur 'forward-only'; dans ce cas le nombre de lignes (rowcount) n'est pas disponible. Cela ne signifie pas que la requête n'a pas fonctionné.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 8
    Par défaut
    Merci pour vos suggestions mais ça ne résoud pas grand chose...
    La requête ne trouve rien : le "fetchall" ne renvoie rien du tout.
    Par contre, pour le "rowcount", j'ai fait un test sur une base Access et, même si le fetchall marche bien, il me renvoie tous les enregistrements, le "rowcount" renvoie -1. Donc effectivement, je ne vais plus faire mes tests avec rowcount !

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    bonjour , j'ai teste le fetchall ça marche .verifie que ton chemin se finisse par \\

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 8
    Par défaut
    J'ai trouvé !

    En fait le problème venait du fichier dbf lui même... Il était créé via dbfpy et, allez savoir pourquoi, l'adodbapi n'arrive pas à le lire. J'ai compris le truc en essayant d'importer mon dbf dans une base Access et en constatant que la table se retrouve vide dans Access. En exportant en dbf une table Access bien remplie, le fetchall marche.
    Donc maintenant je crée et je remplie ma table directement avec adodbapi et je dis bye bye à dbfpy !

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

Discussions similaires

  1. [PHP 5.3] Exécuter des requêtes SQL d'un fichier PHP périodiquement
    Par gsoub dans le forum Langage
    Réponses: 17
    Dernier message: 21/05/2012, 10h22
  2. Log ou moniteur des requêtes SQL sur Express
    Par vmolines dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/02/2008, 11h28
  3. [ADO] Exécuter des requêtes contenues dans un fichier SQL
    Par Lucas Panny dans le forum Visual C++
    Réponses: 1
    Dernier message: 29/01/2008, 06h35
  4. [VBA] Requête SQL sur un fichier excel ?
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/01/2006, 23h06
  5. Journal des requêtes SQL effectuées
    Par Kcirtap dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 18/07/2005, 09h58

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