1 from PyQt4 import QtSql, QtCore
2 from PyQt4.QtSql import *
6 def __init__(self,nom):
9 def setField(self,FieldStringList):
10 self.FieldStringList=FieldStringList
11 self.idName=FieldStringList[0]
13 def setTypeField(self,FieldTypeListe,clef):
14 self.FieldTypeListe = FieldTypeListe
18 return self.FieldStringList
20 def insereLigne(self,valeurs,debug=False):
21 if self.verifieExitenceId(valeurs[0])!=0 :
22 print "impossible d inserer " , valeurs, "dans ", self.nom
23 print "l id est deja existant"
25 texteQuery='insert into ' + self.nom + " values "+ str(valeurs)+ ';'
27 if debug : print texteQuery, " " , maQuery.exec_(texteQuery)
28 else : maQuery.exec_(texteQuery)
30 def insereLigneAutoId(self,valeurs,debug=False):
31 texteQuery='insert into ' + self.nom + self.cols+ " values "+ str(valeurs)+ ';'
33 if debug : print texteQuery, " " , maQuery.exec_(texteQuery)
34 else : maQuery.exec_(texteQuery)
36 def insereOuRemplaceLigne(self,valeurs,debug=False):
37 texteQuery='insert or replace into ' + self.nom + " values "+ str(valeurs)+ ';'
39 if debug : print texteQuery, " " , maQuery.exec_(texteQuery)
40 else : maQuery.exec_(texteQuery)
43 def verifieExitenceId(self,valeur):
44 # ne fonctionne pas correctement, il faudrait se servir de la clef
45 texteQuery= "select * from " + self.nom + " where "+ self.idName+'='+str(valeur) +';'
47 maQuery.exec_(texteQuery)
49 while(maQuery.next()): nb=nb+1
54 print "Pas de remplissage sauf si cette methode est surchargee"
56 def createSqlTable(self):
57 print "Pas de creation par defaut : cette methode doit etre surchargee"
59 # On ne se sert pas du csv python entre autre parcequ'il ne gere pas les entetes
60 def exportToCSV(self):
61 aujourdhui=datetime.date.today()
62 monFolder="ExportDB"+str(aujourdhui)
63 monFichier=monFolder+"/Sauve_"+str(self.nom)+'.csv'
64 texteQuery= "select * from " + self.nom +';'
66 for col in self.FieldStringList:
68 texteSauve=texteSauve[0:-1] # on enleve le dernier ";"
72 maQuery.exec_(texteQuery)
74 while(maQuery.next()):
76 for i in range(len(self.FieldStringList)):
77 texteSauve+=str(maQuery.value(i).toString())+";"
78 texteSauve=texteSauve[0:-1] # on enleve le dernier ";"
82 print "pas de sauvegarde de : " , self.nom , " table vide"
85 from Stats.utiles import writeFile
86 Bok=writeFile(monFichier,texteSauve)
88 print "sauvegarde de : " , self.nom , " effectuee "
90 print "pas de sauvegarde de : " , self.nom , " IOerror"
92 def importFromCSV(self,folder,force):
93 monFichier=folder+"/Sauve_"+str(self.nom)+'.csv'
95 f=open(monFichier,'r')
97 print "Pas de chargement de la table ", self.nom
98 print "Impossible d'ouvrir le fichier ", monFichier
101 enTete=tuple(lignes[0][0:-1].split(";"))
102 if enTete!=self.FieldStringList:
103 print "Pas de chargement de la table ", self.nom
104 print "les entetes ne correspondent pas"
106 for StrVal in lignes[1:]:
107 listeVal=tuple(StrVal[0:-1].split(";"))
109 for i in range(len(listeVal)):
110 if self.FieldTypeListe[i]=='int' : listeValTypee.append(int(listeVal[i]))
111 if self.FieldTypeListe[i]=='float': listeValTypee.append(float(listeVal[i]))
112 if self.FieldTypeListe[i]=='str' : listeValTypee.append(listeVal[i])
113 if force==1 : self.insereOuRemplaceLigne(tuple(listeValTypee))
114 if force==0 : self.insereLigne(tuple(listeValTypee))