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 :

Contenu fichier stocké dans une base de données


Sujet :

Python

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut Contenu fichier stocké dans une base de données
    Bonjour,

    Je souhaite lire le contenu d'un fichier et stocké ce contenu dans un champ de ma base données.

    Je vous donne mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    f=open("test_pdf.txt")
    lignes = f.readlines()
     
    #connexion à la base
    base = MySQLdb.connect(db="tom",user="tom",passwd="tom", host="tom")
    cursor=base.cursor()
     
    # je stocke mes variables dans ma base
    cursor.execute("INSERT INTO logs (clientname,version,os,testname,log,contenu) VALUES ('%s','%s','%s','%s','%s');" %('tom','v6','NT','test_pdf',lignes))
    j'obtiens une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Connection Error with database : not all arguments converted during string formatting.

    Est ce que je m'y prends d'une mauvaise façon pour lire et stocker le contenu? sachant que par la suite, je dois réaliser un site web qui va m'afficher ce contenu dans une page html.

    Merci de votre aide

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    Bon je viens d'essayer une autre méthode. J'ai créer un widget text dans lequel j'affiche mon fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            	try: 
    			f=open("codr_pdf.txt")
    			l = 0
    			self.text.delete('1.0', END)
    			for lines in f:
    				l = l+1
    				self.text.insert(str(l) + '.0',lines)
    			f.close()
    		except:
    			pass
    et j'essaye de recuper le contenu par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.lignes=self.text.get('0.0',END)
    et j'ai toujours la meme erreur, lors de l'insertion dans la base de données!!!

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 36
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par t_om84
    Bon je viens d'essayer une autre méthode. J'ai créer un widget text dans lequel j'affiche mon fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            	try: 
    			f=open("codr_pdf.txt")
    			l = 0
    			self.text.delete('1.0', END)
    			for lines in f:
    				l = l+1
    				self.text.insert(str(l) + '.0',lines)
    			f.close()
    		except:
    			pass
    et j'essaye de recuper le contenu par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.lignes=self.text.get('0.0',END)
    et j'ai toujours la meme erreur, lors de l'insertion dans la base de données!!!
    Il faut que tu précises le mode d'ouverture de ton fichier.
    avec ton exemple, ce serait quelque chose du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    f=open("codr_pdf.txt", "r")
    'r' signifie 'read'
    tu as aussi
    'a' pour 'append' (il ajoute à la fin d'un fichier existant)
    ou bien
    'w' pour 'write' (créé un fichier du nom entré)
    Par contre, le write efface le contenu du fichier s'il existe déjà.
    il faut donc faire attention au nom que tu entres.

    bon courage

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    Non ce n'est pas ça! même en rajoutant le "r" ou autre chose, ça ne marche pas, j'obtiens tjrs l'erreur

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 36
    Points : 37
    Points
    37
    Par défaut
    dans ce cas, ton erreur doit être au moment où tu essaie d'enregistrer.
    est-ce que tu affiches les données que tu souhaite enregistrer ?
    si oui, comment ? et avec quoi ?

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Tu as 6 noms de champs au début et tu ne donnes que 5 valeurs, c'est peut-être ça le problème

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    non c'est pas ça, j'ai fit une erreur de recopie


    je me pose des questions


    readlines() me retourne une liste

    readline() me retroune une chaine de caractères

    C'ets bien ça? donc cela voudrait dire que je devrais écrire dans mon insert :

    lignes[0]

    Mais bon come d'habitude j'ai la meme erreur.

    Bon je essayé avec un simple fichier txt contenenant :


    totototototototototot


    j'obtiens l'errreur!

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    Ou alors, si je prends l'exemple de mettre le fichier dans un widget text, et que je recupère le contenu par un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    contenu = text.get('1.0',END)
    Celà me retourne bien le texte en chaine de caractères?

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 36
    Points : 37
    Points
    37
    Par défaut
    Pas tout à fait. Il faut d'abord que tu créé le widget en question
    Je te conseille de faire appel aux classes. ca sera plus facile, de gérer les divers éléments de ton application.

    Après l'avoir créé, il faut que ce même widget récupère les informations de ta base.
    pour le créer, tu peux faire qq chose comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    self.entree = Text(master, width=100)
    self.entree.pack()
    et pour afficher dans ton widget text,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.entree.insert(0.0,data)
    voilà !
    J'espère que j'ai pu t'être utile.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    l'interface graphique est deja toute crée! Le fichier txt est inséré dans le widget text, pas de soucis

    Pour ça il n'y pas pas de probleme.

    Ce que je ne comprends pas, c'est pourquoi mon code me soirt cette erreur, y-a-t-il une limitation en nombre de caractères?

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 36
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par t_om84
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    contenu = text.get('1.0',END)
    le fait de mettre 1.0 désigne la position, alors si tu ajoutes en plus END, il ne sais plus où il en est.
    Les deux paramètres entre parenthèses doivent désigner l'emplacement et le contenu à afficher.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    Citation Envoyé par Makino
    Citation Envoyé par t_om84
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    contenu = text.get('1.0',END)
    le fait de mettre 1.0 désigne la position, alors si tu ajoutes en plus END, il ne sais plus où il en est.
    Les deux paramètres entre parenthèses doivent désigner l'emplacement et le contenu à afficher.
    t'es sur???


    http://python.developpez.com/faq/?page=Text#TextGet


  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 36
    Points : 37
    Points
    37
    Par défaut
    oups !
    je viens de remarquer les quotes. Oublies mon dernier message.
    Quoi qu'il en soit, ton code signifie que tu veux afficher 1.0.
    Cependant, je persiste à croire que le get n'est pas approprié. Si tu veux afficher dans un widget text, le insert est plus approprié.

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    Je pense que tu as mal compris mon probleme
    L'insertion il est deja faite

    Ce que je veux c'est de récuperer le contenu du widget text et stocker ce contenu dans une base de données!!!!

    Donc pour recuperer il faut utiliser le get qui va me stocker dans une variable, et c'est variable me procoque une erreur lors de l'insertion dans la base de données!

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 36
    Points : 37
    Points
    37
    Par défaut
    en effet, j'avais mal compris.
    alors, si tu veux récupérer le contenu de ton widget, le get est effectivement adapté, mais tu dois enlever les '.
    Par contre, si tu utilises des classes, tu dois ajouter self avant text.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txt = self.entree.get(0.0, END)

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    je viens de faire un test, le get avec ou sans les quotes, me renvoie la même chose.

    Ce soir je testerais avec le bon code pour voir si il y a un chamngement.

    merci en tout cas

    Je te tiens au courant!

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    que je fasse :

    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.text.get('1.0',END)
    le resultat est le même..


    Personne ne se connecte sur une base de données via Python???


    Merci

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 36
    Points : 37
    Points
    37
    Par défaut
    c vrai que ma solution n'était pas prévue pour une base, à l'origine, mais je ne savais pas si ca changerait qq chose.
    j'ai ma réponse.
    dsl de ne pas avoir pu t'aider.

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    pas de soucis

  20. #20
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Avant toute chose, l'erreur est bien à cette ligne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cursor.execute("INSERT INTO logs 
    (clientname,version,os,testname,log,contenu) VALUES ('%s','%s','%s','%s','%s', '%s');" %('tom','v6','NT','test_pdf',lignes))
    - dans ta base, tous tes champs sont des string ?
    - as-tu essayé de remplacer lignes par un string (assez court) ?
    - As-tu vérifier la limitation de la longueur de tes chaînes de caractères dans la définition de tes champs de ta base ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/05/2015, 16h21
  2. [MySQL] Insérer le contenu d'un fichier Excel dans une base de donnée Mysql
    Par ghir_ana dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/07/2011, 15h46
  3. intégrer un fichier image dans une base de donnée?
    Par Lody dans le forum Requêtes
    Réponses: 9
    Dernier message: 16/03/2006, 19h08
  4. Intégration des fichier XML dans une base de données MySQL
    Par bebemoundjou dans le forum XQUERY/SGBD
    Réponses: 8
    Dernier message: 25/11/2005, 22h41
  5. Enregistremenbt d'un fichier WORD dans une base de données
    Par yam49 dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/08/2004, 15h01

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