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 :

Remplir une base de données


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Par défaut Remplir une base de données
    Je cherche à remplir une base de données a partir d'informations extraites sur le net.
    A pres avoir générer une requete sql (insert into ...) je cherche à l'executer dans la BD et c'est la que ça coince. Voici le script:

    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
    url = url1 + url2 + url3
    print url
    import urllib
    f = urllib.urlopen(url, proxies = {'http': 'http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'})
    
    import psycopg2
    connection = psycopg2.connect("dbname='orleans' user='pgadmin' host='localhost' password='pgadmin'")
    
    cur = connection.cursor()
    cur.execute("CREATE TABLE geonames (geonames_id integer primary key,iso_alpha2 varchar(2) not null, iso_alpha3 varchar(3) not null, iso_num integer not null, fips_code varchar(2), name varchar(50) not null,capital varchar(50),area real not null, population integer not null, continent varchar(2) not null, language varchar(100), currency varchar(3))"                      
               )                  
    connection.commit()
    
    def convert():
    
          for line in f:
             dp = line.split('	')  
             req ="INSERT INTO Geonames VALUES ("+dp[11] + ",'" + dp[0] + "','" + dp[1] + "'," + dp[2] + ",'" + dp[3] + "','" + dp[4] + "','" + dp[5] + "'," + dp[6] + "," + dp[7] + ",'" + dp[8] + "','" + dp[9] + "','" + dp[10] + "')"
             cur.execute("req")
             connection.commit()
             
    convert()
    
    connection.close()

  2. #2
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Donnes nous au moins le message d'erreur, tout le monde n'a pas postgres !!

  3. #3
    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, je vois déjà une erreur
    à remplacer par

  4. #4
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Par défaut
    Bonjour,

    Suite à votre remarque, j'ai supprimer les doubles cotes mais ce la ne fonctionne toujours pas. Mon probleme vient de la premiere ligne du fichier csv que je souhaite intégrer dans la base postgre qui contient les titres de colonne et non des données. Comment puis-je faire pour que la boucle suivante ne commence qu'a la deuxiemme ligne?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def convert():
     
          for line in f:
             cur = connection.cursor()
             dp = line.split('	')  
             req ="INSERT INTO Geonames VALUES ("+dp[11] + ",'" + dp[0] + "','" + dp[1] + "'," + dp[2] + ",'" + dp[3] + "','" + dp[4] + "','" + dp[5] + "'," + dp[6] + "," + dp[7] + ",'" + dp[8] + "','" + dp[9] + "','" + dp[10] + "')"
             cur.execute(req)
             connection.commit()

  5. #5
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def convert():
        skip = True
        for line in f:
            if skip:
                skip = False
            else:
                cur = connection.cursor()
                dp = line.split('    ')  
                req ="INSERT INTO Geonames VALUES ("+dp[11] + ",'" + dp[0] + "','" + dp[1] + "'," + dp[2] + ",'" + dp[3] + "','" + dp[4] + "','" + dp[5] + "'," + dp[6] + "," + dp[7] + ",'" + dp[8] + "','" + dp[9] + "','" + dp[10] + "')"
                cur.execute(req)
                connection.commit()

  6. #6
    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,

  7. #7
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Citation Envoyé par xavier-Pierre Voir le message
    bonjour,
    Si le fichier est ouvert par open cela ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    D:\temp>test.py
    Traceback (most recent call last):
      File "D:\temp\test.py", line 21, in test
        for ligne in fichier_log[1:]:
    TypeError: 'file' object is unsubscriptable
     
    D:\temp>
    Et honnêtement j'ai même pas envisagé de faire un slice sur un fichier qui peut avoir une taille indéfini. Mais peut être que cela fonctionne avec d'autres modes d'ouverture du fichier.

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

Discussions similaires

  1. Remplir une base de données
    Par law56100 dans le forum WinDev
    Réponses: 4
    Dernier message: 17/04/2008, 08h33
  2. [Delphi - Accuracer] Comment remplir une base de données ?
    Par altaruk dans le forum Bases de données
    Réponses: 1
    Dernier message: 14/12/2007, 15h44
  3. Comment remplir une base de donnée Access ?
    Par k_boy dans le forum Bases de données
    Réponses: 1
    Dernier message: 13/12/2007, 22h56
  4. Remplir une base de donnée
    Par nistelsof dans le forum JDBC
    Réponses: 1
    Dernier message: 30/05/2007, 23h15
  5. Réponses: 3
    Dernier message: 29/03/2006, 14h23

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