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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 # coding: utf-8 ''' Created on 23 mars 2018 @author: dedalios ''' import csv import sqlite3 # class vls_actes(object): def __init__(self,ACT_CODE,ACT_LIBELLE): self.ACT_CODE = ACT_CODE self.ACT_LIBELLE =ACT_LIBELLE def charger_csv(self,liste): self.ACT_CODE = liste[0] self.ACT_LIBELLE =liste[1] def __str__(self): resultat = "Act_Code :" + self.ACT_CODE + "\n" resultat += "ACT_LIBELLE:" + self.ACT_LIBELLE return resultat class Creation_table(object): """ Structure des tables """ def __init__(self): self.dbNAME ='vsl.sq3' self.nomrepertoire =None self.Base =None def creer_table(self): self.dbNAME =self.nomrepertoire+'/' +self.dbNAME self.Base =sqlite3.connect(self.dbNAME) # ouverture DB curseur = self.Base.cursor() # appel au curseur vls_actes = """ CREATE TABLE vls_actes( ACT_CODE String(255), ACT_LIBELLE String(255), CONSTRAINT actes_pk PRIMARY KEY(ACT_CODE) ); """ if(vls_actes!=""): try: curseur.execute(vls_actes) self.Base.commit() except: print("Problème vls_actes") # class ExcelFr(csv.excel): # Séparateur de champ delimiter = ";" # Séparateur de ''chaîne'' quotechar = None # Gestion du séparateur dans les ''chaînes'' escapechar = None doublequote = None # Fin de ligne lineterminator = "\r\n" # Ajout automatique du séparateur de chaîne (pour ''writer'') quoting = csv.QUOTE_NONE # Ne pas ignorer les espaces entre le délimiteur de chaîne # et le texte skipinitialspace = False if __name__ == '__main__': # Enregistre ce dialecte auprès du module csv # i=0 # iterateur du nombre de ligne lu csv.register_dialect('excel-fr', ExcelFr()) fname = "actes.csv" file = open(fname, "r") # # Ouverture du fichier source. # # D'après la documentation, le mode ''b'' est # *obligatoire* sur les plate-formes où il est # significatif. Dans la pratique, il est conseillé # de toujours le mettre. # try: # # Création du ''lecteur'' CSV. # fichier_lu = csv.reader(file, 'excel-fr') for row in fichier_lu: i+=1 # supression de la igne N° 1 du fichier porteur de l'entete if(i>1): nouvel_acte= vls_actes(row[0],row[1]) print(nouvel_acte) finally: # # Fermeture du fichier source # file.close()
mon problèmel'exécution renvoi
Code : Sélectionner tout - Visualiser dans une fenêtre à part nouvel_acte= vls_actes.charger_csv(row)
la finalite effectué la convertion du csv en base sqllite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 nouvel_acte= vls_actes.charger_csv(row) TypeError: charger_csv() missing 1 required positional argument: 'liste'
Il existe effectivement des outils de convertion csv -> sqllite mais voila cela suppose que le fichier d'origine respecte les régles de codification ce qui n'est pas toujours cas , donc je préfére vérifier les données,
faire des convertions sur divers donnes de type numérique , sur des zones définie comme des date ...
Autre point si comme le recommande les informations la lecture de fichier csv on utilise la lecture "rb"
cette commande retourne une erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 file = open(fname, "rb")
for row in fichier_lu:
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
Partager