mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-05-12 05:40:47 +05:00
116 lines
4.4 KiB
Python
116 lines
4.4 KiB
Python
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))
|
|
|
|
|