X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FTools%2FVerima%2FBase%2FtableDeBase.py;h=7bba47cb72e94cd5f8b8aefc3a541d8e56e32eec;hp=9b4b1b7e2ab2862d9f3dc8ae90add4ea21b90864;hb=0003e6b4fcc95a0aec695ceef8371dee28baf417;hpb=a17b36970bc61da1d664453c615754997c925b18 diff --git a/src/Tools/Verima/Base/tableDeBase.py b/src/Tools/Verima/Base/tableDeBase.py index 9b4b1b7e2..7bba47cb7 100644 --- a/src/Tools/Verima/Base/tableDeBase.py +++ b/src/Tools/Verima/Base/tableDeBase.py @@ -2,114 +2,112 @@ from qtsalome import QSqlQuery 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=False): - 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,debug=False): - texteQuery='insert into ' + self.nom + self.cols+ " values "+ str(valeurs)+ ';' - maQuery=QSqlQuery() - if debug : print texteQuery, " " , maQuery.exec_(texteQuery) - else : maQuery.exec_(texteQuery) - - def insereOuRemplaceLigne(self,valeurs,debug=False): - 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): + 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=False): + 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,debug=False): + texteQuery='insert into ' + self.nom + self.cols+ " values "+ str(valeurs)+ ';' + maQuery=QSqlQuery() + if debug : print(texteQuery, " " , maQuery.exec_(texteQuery)) + else : maQuery.exec_(texteQuery) + + def insereOuRemplaceLigne(self,valeurs,debug=False): + 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 + texteQuery= "select * from " + self.nom + " where "+ self.idName+'='+str(valeur) +';' + maQuery=QSqlQuery() + maQuery.exec_(texteQuery) + nb=0 + while(next(maQuery)): nb=nb+1 + return nb - def remplit(self): - print "Pas de remplissage sauf si cette methode est surchargee" + 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" + 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)) - - + 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(next(maQuery)): + 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))