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 :

Injection en masse dans sqLite


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut Injection en masse dans sqLite
    Bonjour à tous,


    Je vous sollicite ce soir car je n'arrive pas à trouver mon erreur. Je souhaite importer en masse dans SqLite pour cela j'utilise le code ci-dessous :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    injectionBdd(data_filename, db_filename):
        """
        Fonction injectant les data dans la bdd
        """
        SQL = """
        insert into modbus (NomFichier, ModbusNum, DateHeure, Cheure, \
                            U12min, U12max, U12moy, \
                            U23min, U23max, U23moy, \
                            U31min, U31max, U31moy, \
                            V1min, V1max, V1moy, \
                            V2min, V2max, V2moy, \
                            V3min, V3max, V3moy, \
                            FREQmin, FREQmax, FREQmoy, \
                            I1min, I1max, I1moy, \
                            I2min, I2max, I2moy, \
                            I3min, I3max, I3moy, \
                            Inmin, Inmax, Inmoy, \
                            PACTmin, PACTmax, PACTmoy, \
                            PREAmin, PREAmax, PREAmoy, \
                            PAPPmin, PAPPmax, PAPPmoy, \
                            COSmin, COSmax, COSmoy, \
                            PACT1min, PACT1max, PACT1moy, \
                            PACT2min, PACT2max, PACT2moy, \
                            PACT3min, PACT3max, PACT3moy, \
                            PREA1min, PREA1max, PREA1moy, \
                            PREA2min, PREA2max, PREA2moy, \
                            PREA3min, PREA3max, PREA3moy, \
                            PAPP1min, PAPP1max, PAPP1moy, \
                            PAPP2min, PAPP2max, PAPP2moy, \
                            PAPP3min, PAPP3max, PAPP3moy, \
                            COS1min, COS1max, COS1moy, \
                            COS2min, COS2max, COS2moy, \
                            COS3min, COS3max, COS3moy)
        values (:NomFichier, :ModbusNum, :DateHeure, :Cheure, \
                            :U12min, :U12max, :U12moy, \
                            :U23min, :U23max, :U23moy, \
                            :U31min, :U31max, :U31moy, \
                            :V1min, :V1max, :V1moy, \
                            :V2min, :V2max, :V2moy, \
                            :V3min, :V3max, :V3moy, \
                            :FREQmin, :FREQmax, :FREQmoy, \
                            :I1min, :I1max, :I1moy, \
                            :I2min, :I2max, :I2moy, \
                            :I3min, :I3max, :I3moy, \
                            :Inmin, :Inmax, :Inmoy, \
                            :PACTmin, :PACTmax, :PACTmoy, \
                            :PREAmin, :PREAmax, :PREAmoy, \
                            :PAPPmin, :PAPPmax, :PAPPmoy, \
                            :COSmin, :COSmax, :COSmoy, \
                            :PACT1min, :PACT1max, :PACT1moy, \
                            :PACT2min, :PACT2max, :PACT2moy, \
                            :PACT3min, :PACT3max, :PACT3moy, \
                            :PREA1min, :PREA1max, :PREA1moy, \
                            :PREA2min, :PREA2max, :PREA2moy, \
                            :PREA3min, :PREA3max, :PREA3moy, \
                            :PAPP1min, :PAPP1max, :PAPP1moy, \
                            :PAPP2min, :PAPP2max, :PAPP2moy, \
                            :PAPP3min, :PAPP3max, :PAPP3moy, \
                            :COS1min, :COS1max, :COS1moy, \
                            :COS2min, :COS2max, :COS2moy, \
                            :COS3min, :COS3max, :COS3moy)
             """
        with open(data_filename, 'rt') as csv_file:
            csv_reader = csv.DictReader(csv_file, delimiter=';')
            with sqlite3.connect(db_filename) as conn:
                cursor = conn.cursor()
                cursor.executemany(SQL, csv_reader)
            cursor.close()
            conn.close()
    et lorsque je lance mon script j'ai le message suivant :
    Traceback (most recent call last):
    File "D:\ENERGETIQUE\SCRIPTS\modbusCSV2sqlite_test.py", line 132, in <module>
    injectionBdd(repTemp+'modbus.csv' , repDBmodbus)
    File "D:\ENERGETIQUE\SCRIPTS\modbusCSV2sqlite_test.py", line 111, in injectionBdd
    cursor.executemany(SQL, csv_reader)
    ProgrammingError: You did not supply a value for binding 83.
    alors que j'ai bien mis la valeur pour le binding 83 puisqu'il s'agit de
    :COS3min
    Merci de votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut
    je me réponds car je viens enfin de trouver la solution. Il s'agit d'une erreur dans l'entête de mes colonnes du fichiers des données. L'entête de la colonne 83 ne correspondait pas la la valeur du champ dans la DB

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

Discussions similaires

  1. Réponses: 24
    Dernier message: 13/12/2006, 13h54
  2. injection de code dans une application
    Par youp_db dans le forum C
    Réponses: 16
    Dernier message: 21/07/2006, 12h33
  3. Insertion en masse dans table de fait
    Par niiccoo dans le forum Oracle
    Réponses: 19
    Dernier message: 29/05/2006, 10h56
  4. Traiter et injecter du XML dans du HTML en "live"
    Par narnou dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/02/2006, 08h27
  5. [VB.NET] fonction qui injecte du html dans une zone précise
    Par denisvignes dans le forum ASP.NET
    Réponses: 5
    Dernier message: 27/10/2005, 09h33

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