--- /dev/null
+from PyQt4 import QtSql, QtCore
+from PyQt4.QtSql import *
+import datetime
+
+class TableDeBase :
+ def __init__(self,nom):
+ self.nom=nom
+
+ def setField(self,FieldStringList):
+ self.FieldStringList=FieldStringList
+ self.idName=FieldStringList[0]
+
+ def setTypeField(self,FieldTypeListe,clef):
+ self.FieldTypeListe = FieldTypeListe
+ self.clef=clef
+
+ def getFields(self):
+ return self.FieldStringList
+
+ def insereLigne(self,valeurs,debug=True):
+ if self.verifieExitenceId(valeurs[0])!=0 :
+ print "impossible d inserer " , valeurs, "dans ", self.nom
+ print "l id est deja existant"
+ return False
+ texteQuery='insert into ' + self.nom + " values "+ str(valeurs)+ ';'
+ maQuery=QSqlQuery()
+ if debug : print texteQuery, " " , maQuery.exec_(texteQuery)
+ else : maQuery.exec_(texteQuery)
+
+ def insereLigneAutoId(self,valeurs):
+ texteQuery='insert into ' + self.nom + self.cols+ " values "+ str(valeurs)+ ';'
+ maQuery=QSqlQuery()
+ print texteQuery, " " , maQuery.exec_(texteQuery)
+
+ def insereOuRemplaceLigne(self,valeurs,debug=True):
+ texteQuery='insert or replace into ' + self.nom + " values "+ str(valeurs)+ ';'
+ maQuery=QSqlQuery()
+ if debug : print texteQuery, " " , maQuery.exec_(texteQuery)
+ else : maQuery.exec_(texteQuery)
+
+
+ def verifieExitenceId(self,valeur):
+# ne fonctionne pas correctement, il faudrait se servir de la clef
+ texteQuery= "select * from " + self.nom + " where "+ self.idName+'='+str(valeur) +';'
+ maQuery=QSqlQuery()
+ maQuery.exec_(texteQuery)
+ nb=0
+ while(maQuery.next()): nb=nb+1
+ return nb
+
+
+ def remplit(self):
+ print "Pas de remplissage sauf si cette methode est surchargee"
+
+ def createSqlTable(self):
+ print "Pas de creation par defaut : cette methode doit etre surchargee"
+
+# On ne se sert pas du csv python entre autre parcequ'il ne gere pas les entetes
+ def exportToCSV(self):
+ aujourdhui=datetime.date.today()
+ monFolder="ExportDB"+str(aujourdhui)
+ monFichier=monFolder+"/Sauve_"+str(self.nom)+'.csv'
+ texteQuery= "select * from " + self.nom +';'
+ texteSauve=""
+ for col in self.FieldStringList:
+ texteSauve+=col+";"
+ texteSauve=texteSauve[0:-1] # on enleve le dernier ";"
+ texteSauve+="\n"
+
+ maQuery=QSqlQuery()
+ maQuery.exec_(texteQuery)
+ asauver=0
+ while(maQuery.next()):
+ asauver=1
+ for i in range(len(self.FieldStringList)):
+ texteSauve+=str(maQuery.value(i).toString())+";"
+ texteSauve=texteSauve[0:-1] # on enleve le dernier ";"
+ texteSauve+="\n"
+
+ if asauver == 0 :
+ print "pas de sauvegarde de : " , self.nom , " table vide"
+ return
+
+ from Stats.utiles import writeFile
+ Bok=writeFile(monFichier,texteSauve)
+ if Bok :
+ print "sauvegarde de : " , self.nom , " effectuee "
+ else :
+ print "pas de sauvegarde de : " , self.nom , " IOerror"
+
+ def importFromCSV(self,folder,force):
+ monFichier=folder+"/Sauve_"+str(self.nom)+'.csv'
+ try :
+ f=open(monFichier,'r')
+ except:
+ print "Pas de chargement de la table ", self.nom
+ print "Impossible d'ouvrir le fichier ", monFichier
+ return 0
+ lignes=f.readlines()
+ enTete=tuple(lignes[0][0:-1].split(";"))
+ if enTete!=self.FieldStringList:
+ print "Pas de chargement de la table ", self.nom
+ print "les entetes ne correspondent pas"
+ return 0
+ for StrVal in lignes[1:]:
+ listeVal=tuple(StrVal[0:-1].split(";"))
+ listeValTypee=[]
+ for i in range(len(listeVal)):
+ if self.FieldTypeListe[i]=='int' : listeValTypee.append(int(listeVal[i]))
+ if self.FieldTypeListe[i]=='float': listeValTypee.append(float(listeVal[i]))
+ if self.FieldTypeListe[i]=='str' : listeValTypee.append(listeVal[i])
+ if force==1 : self.insereOuRemplaceLigne(tuple(listeValTypee))
+ if force==0 : self.insereLigne(tuple(listeValTypee))
+
+