@@ -40,7 +40,7 @@ class Dump:
4040 def __init__ (self ):
4141 self .__outputFile = None
4242 self .__outputFP = None
43-
43+
4444 def __write (self , data , n = True ):
4545 if n :
4646 print data
@@ -52,11 +52,19 @@ def __write(self, data, n=True):
5252 self .__outputFP .flush ()
5353
5454 conf .loggedToOut = True
55-
55+
56+ def __formatString (self , string ):
57+ string = unicode (string )
58+ string = string .replace ("__NEWLINE__" , "\n " ).replace ("__TAB__" , "\t " )
59+ string = string .replace ("__START__" , "" ).replace ("__STOP__" , "" )
60+ string = string .replace ("__DEL__" , ", " )
61+
62+ return string
63+
5664 def setOutputFile (self ):
5765 self .__outputFile = "%s%slog" % (conf .outputPath , os .sep )
58- self .__outputFP = codecs .open (self .__outputFile , "a " , conf .dataEncoding )
59-
66+ self .__outputFP = codecs .open (self .__outputFile , "ab " , conf .dataEncoding )
67+
6068 def string (self , header , data , sort = True ):
6169 if isinstance (data , (list , tuple , set )):
6270 self .lister (header , data , sort )
@@ -66,9 +74,7 @@ def string(self, header, data, sort=True):
6674 data = unicode (data )
6775
6876 if data :
69- data = data .replace ("__NEWLINE__" , "\n " ).replace ("__TAB__" , "\t " )
70- data = data .replace ("__START__" , "" ).replace ("__STOP__" , "" )
71- data = data .replace ("__DEL__" , ", " )
77+ data = self .__formatString (data )
7278
7379 if "\n " in data :
7480 self .__write ("%s:\n ---\n %s\n ---\n " % (header , data ))
@@ -97,7 +103,25 @@ def lister(self, header, elements, sort=True):
97103
98104 if elements :
99105 self .__write ("" )
100-
106+
107+ def technic (self ,header ,data ):
108+ self .string (header , data )
109+
110+ def banner (self ,data ):
111+ self .string ("banner" , data )
112+
113+ def currentUser (self ,data ):
114+ self .string ("current user" , data )
115+
116+ def currentDb (self ,data ):
117+ self .string ("current database" , data )
118+
119+ def dba (self ,data ):
120+ self .string ("current user is DBA" , data )
121+
122+ def users (self ,users ):
123+ self .lister ("database management system users" , users )
124+
101125 def userSettings (self , header , userSettings , subHeader ):
102126 self .__areAdmins = set ()
103127
@@ -125,35 +149,8 @@ def userSettings(self, header, userSettings, subHeader):
125149 self .__write (" %s: %s" % (subHeader , setting ))
126150 print
127151
128- def dbColumns (self , dbColumns , colConsider , dbs ):
129- for column in dbColumns .keys ():
130- if colConsider == "1" :
131- colConsiderStr = "s like '" + column + "' were"
132- else :
133- colConsiderStr = " '%s' was" % column
134-
135- msg = "Column%s found in the " % colConsiderStr
136- msg += "following databases:"
137- self .__write (msg )
138-
139- printDbs = {}
140-
141- for db , tblData in dbs .items ():
142- for tbl , colData in tblData .items ():
143- for col , dataType in colData .items ():
144- if column .lower () in col .lower ():
145- if db in printDbs :
146- if tbl in printDbs [db ]:
147- printDbs [db ][tbl ][col ] = dataType
148- else :
149- printDbs [db ][tbl ] = { col : dataType }
150- else :
151- printDbs [db ] = {}
152- printDbs [db ][tbl ] = { col : dataType }
153-
154- continue
155-
156- self .dbTableColumns (printDbs )
152+ def dbs (self ,dbs ):
153+ self .lister ("available databases" , dbs )
157154
158155 def dbTables (self , dbTables ):
159156 if not isinstance (dbTables , dict ):
@@ -268,7 +265,7 @@ def dbTableValues(self, tableValues):
268265 os .makedirs (dumpDbPath , 0755 )
269266
270267 dumpFileName = "%s%s%s.csv" % (dumpDbPath , os .sep , table )
271- dumpFP = codecs .open (dumpFileName , "w " , conf .dataEncoding )
268+ dumpFP = codecs .open (dumpFileName , "wb " , conf .dataEncoding )
272269
273270 count = int (tableValues ["__infos__" ]["count" ])
274271 separator = ""
@@ -350,6 +347,45 @@ def dbTableValues(self, tableValues):
350347
351348 logger .info ("Table '%s.%s' dumped to CSV file '%s'" % (db , table , dumpFileName ))
352349
350+ def dbColumns (self , dbColumns , colConsider , dbs ):
351+ for column in dbColumns .keys ():
352+ if colConsider == "1" :
353+ colConsiderStr = "s like '" + column + "' were"
354+ else :
355+ colConsiderStr = " '%s' was" % column
356+
357+ msg = "Column%s found in the " % colConsiderStr
358+ msg += "following databases:"
359+ self .__write (msg )
360+
361+ printDbs = {}
362+
363+ for db , tblData in dbs .items ():
364+ for tbl , colData in tblData .items ():
365+ for col , dataType in colData .items ():
366+ if column .lower () in col .lower ():
367+ if db in printDbs :
368+ if tbl in printDbs [db ]:
369+ printDbs [db ][tbl ][col ] = dataType
370+ else :
371+ printDbs [db ][tbl ] = { col : dataType }
372+ else :
373+ printDbs [db ] = {}
374+ printDbs [db ][tbl ] = { col : dataType }
375+
376+ continue
377+
378+ self .dbTableColumns (printDbs )
379+
380+ def query (self , query , queryRes ):
381+ self .string (query , queryRes )
382+
383+ def rFile (self ,filePath ,fileData ):
384+ self .string ("%s file saved to" % filePath ,fileData ,sort = False )
385+
386+ def registerValue (self ,registerData ):
387+ self .string ("Registry key value data" , registerData ,sort = False )
388+
353389# object to manage how to print the retrieved queries output to
354390# standard output and sessions file
355391dumper = Dump ()
0 commit comments