X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FTools%2FVerima%2FBase%2FtableDeBase.py;fp=src%2FTools%2FVerima%2FBase%2FtableDeBase.py;h=3a05a045c0d8b683a253750473eac88f92f40a38;hp=0000000000000000000000000000000000000000;hb=2d16118826a6b7874b3093ed11284cfbb30a5efa;hpb=578963d0d280466665d5440859bb97e3ee8b6b3e diff --git a/src/Tools/Verima/Base/tableDeBase.py b/src/Tools/Verima/Base/tableDeBase.py new file mode 100644 index 000000000..3a05a045c --- /dev/null +++ b/src/Tools/Verima/Base/tableDeBase.py @@ -0,0 +1,115 @@ +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)) + +