1 from qtsalome import QSqlQuery
5 def __init__(self,nom):
8 def setField(self,FieldStringList):
9 self.FieldStringList=FieldStringList
10 self.idName=FieldStringList[0]
12 def setTypeField(self,FieldTypeListe,clef):
13 self.FieldTypeListe = FieldTypeListe
17 return self.FieldStringList
19 def insereLigne(self,valeurs,debug=False):
20 if self.verifieExitenceId(valeurs[0])!=0 :
21 print("impossible d inserer " , valeurs, "dans ", self.nom)
22 print("l id est deja existant")
24 texteQuery='insert into ' + self.nom + " values "+ str(valeurs)+ ';'
26 if debug : print(texteQuery, " " , maQuery.exec_(texteQuery))
27 else : maQuery.exec_(texteQuery)
29 def insereLigneAutoId(self,valeurs,debug=False):
30 texteQuery='insert into ' + self.nom + self.cols+ " values "+ str(valeurs)+ ';'
32 if debug : print(texteQuery, " " , maQuery.exec_(texteQuery))
33 else : maQuery.exec_(texteQuery)
35 def insereOuRemplaceLigne(self,valeurs,debug=False):
36 texteQuery='insert or replace into ' + self.nom + " values "+ str(valeurs)+ ';'
38 if debug : print(texteQuery, " " , maQuery.exec_(texteQuery))
39 else : maQuery.exec_(texteQuery)
42 def verifieExitenceId(self,valeur):
43 # ne fonctionne pas correctement, il faudrait se servir de la clef
44 texteQuery= "select * from " + self.nom + " where "+ self.idName+'='+str(valeur) +';'
46 maQuery.exec_(texteQuery)
48 while(maQuery.next()): nb=nb+1
53 print("Pas de remplissage sauf si cette methode est surchargee")
55 def createSqlTable(self):
56 print("Pas de creation par defaut : cette methode doit etre surchargee")
58 # On ne se sert pas du csv python entre autre parcequ'il ne gere pas les entetes
59 def exportToCSV(self):
60 aujourdhui=datetime.date.today()
61 monFolder="ExportDB"+str(aujourdhui)
62 monFichier=monFolder+"/Sauve_"+str(self.nom)+'.csv'
63 texteQuery= "select * from " + self.nom +';'
65 for col in self.FieldStringList:
67 texteSauve=texteSauve[0:-1] # on enleve le dernier ";"
71 maQuery.exec_(texteQuery)
73 while(maQuery.next()):
75 for i in range(len(self.FieldStringList)):
76 texteSauve+=str(maQuery.value(i).toString())+";"
77 texteSauve=texteSauve[0:-1] # on enleve le dernier ";"
81 print("pas de sauvegarde de : " , self.nom , " table vide")
84 from Stats.utiles import writeFile
85 Bok=writeFile(monFichier,texteSauve)
87 print("sauvegarde de : " , self.nom , " effectuee ")
89 print("pas de sauvegarde de : " , self.nom , " IOerror")
91 def importFromCSV(self,folder,force):
92 monFichier=folder+"/Sauve_"+str(self.nom)+'.csv'
94 f=open(monFichier,'r')
96 print("Pas de chargement de la table ", self.nom)
97 print("Impossible d'ouvrir le fichier ", monFichier)
100 enTete=tuple(lignes[0][0:-1].split(";"))
101 if enTete!=self.FieldStringList:
102 print("Pas de chargement de la table ", self.nom)
103 print("les entetes ne correspondent pas")
105 for StrVal in lignes[1:]:
106 listeVal=tuple(StrVal[0:-1].split(";"))
108 for i in range(len(listeVal)):
109 if self.FieldTypeListe[i]=='int' : listeValTypee.append(int(listeVal[i]))
110 if self.FieldTypeListe[i]=='float': listeValTypee.append(float(listeVal[i]))
111 if self.FieldTypeListe[i]=='str' : listeValTypee.append(listeVal[i])
112 if force==1 : self.insereOuRemplaceLigne(tuple(listeValTypee))
113 if force==0 : self.insereLigne(tuple(listeValTypee))