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 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
| # coding: utf-8
'''
Created on 23 mars 2018
@author:
'''
import csv
import sqlite3
import sys
import datetime
import csv
import os
import encodings
from unidecode import unidecode
from codecs import open
def convertie_date(src):
if src =='NULL':
valid_date = None
else:
alpha_aaaa = int(src[0:4])
alpha_mm = int(src[4:6])
alpha_jj = int(src[6:8])
try :
valid_date = datetime.date(alpha_aaaa,alpha_mm,alpha_jj)
return valid_date
except ValueError:
print('%s Date invalide !' % src)
return None
pass
def EstceNull(src):
if src =='NULL':
return None
else:
return src
def Estce_nombreNull(src):
if src =='NULL':
return None
else:
return int(src)
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 = True
# 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
class vls_actes(object):
def __init__(self,liste):
self.ACT_CODE = EstceNull(liste[0]);
self.ACT_LIBELLE = EstceNull(liste[1]);
def __str__(self):
resultat = "Act_Code : " + str(self.ACT_CODE) + "\n"
resultat += "ACT_LIBELLE: " + str(self.ACT_LIBELLE )
return resultat
def table_sqllite(self,Base):
creer_table = """CREATE TABLE vsl_actes(
ACT_CODE TEXT(255) NOT NULL,
ACT_LIBELLE TEXT(255),
CONSTRAINT actes_pk PRIMARY KEY(ACT_CODE)
);
"""
detruire_table = """DROP TABLE IF EXISTS vsl_actes;"""
curseur = Base.cursor() # appel au curseur
# supprimer table existante
if(detruire_table !=""):
try:
curseur.execute(detruire_table)
except sqlite3.Error as e:
print("Problème"+ " :" + e.args[0] + " sur commande /n"+ detruire_table )
Base.rollback()
else:
Base.commit()
pass
if(creer_table !=""):
print("creer base")
try:
curseur.execute(creer_table)
except sqlite3.Error as e:
print("Problème"+ " :" + e.args[0] + " sur commande /n"++ creer_table )
Base.rollback()
else:
Base.commit()
pass
def insertion_sqllite(self,Base):
curseur = Base.cursor() # appel au curseur
data=[self.ACT_CODE,self.ACT_LIBELLE]
if(self.ACT_CODE == '9BFC1'):
print(data)
rq = """ INSERT INTO vsl_actes
(ACT_CODE, ACT_LIBELLE)
VALUES(?, ?);"""
try:
curseur.execute(rq,data)
except sqlite3.Error as e:
print("Problème"+ " :" + e.args[0] + " sur commande d'insertion /n" )
print(rq)
Base.rollback()
else:
Base.commit()
def actes(nomfichier,Base):
file = open(nomfichier, encoding='utf8')
i=0 # indeteur de ligne du fichier pour ne pas traiter l'entete
#
# Ouverture du fichier source.
#
try:
#
# Cr�ation du ''lecteur'' CSV.
#
fichier_lu = csv.reader(file, 'excel-fr')
max_long_ACT_CODE = 0
max_long_ACT_LIBELLE = 0
for row in fichier_lu:
i+=1
if(i>1):
nouvel_acte = vls_actes(row)
if(i==2): # Suppprsseion de la table precedente si besion
# creation de la nouvelle table
nouvel_acte.table_sqllite(Base)
# insertion de donnees
nouvel_acte.insertion_sqllite(Base)
if(max_long_ACT_CODE < len(nouvel_acte.ACT_CODE)):
max_long_ACT_CODE = len(nouvel_acte.ACT_CODE)
if(max_long_ACT_LIBELLE < len(nouvel_acte.ACT_LIBELLE)):
max_long_ACT_LIBELLE = len(nouvel_acte.ACT_LIBELLE)
#print(max_long_ACT_CODE, end='\n' )
#print(max_long_ACT_LIBELLE , end='\n')
except OSError:
print("Problème d'access au fichier :" + nomfichier)
finally:
#
# Fermeture du fichier source
#
file.close()
if __name__ == '__main__':
# Enregistre ce dialecte aupres du module csv
encodage ="utf-8"
LaBase ="nombase2.sq3"
Base = sqlite3.connect(LaBase)
csv.register_dialect('excel-fr', ExcelFr())
actes("actes.csv" , Base)
Base.close() |
Partager