WIP: import JSON file
This commit is contained in:
parent
e56551d9a8
commit
0eeb77862e
|
@ -23,6 +23,7 @@ class DBSchema:
|
|||
self.cur = None
|
||||
self.tableNames = []
|
||||
self.tables = {}
|
||||
self.jsonData = None
|
||||
return
|
||||
|
||||
|
||||
|
@ -45,8 +46,12 @@ class DBSchema:
|
|||
|
||||
|
||||
def importDBSchema(self, filein):
|
||||
return
|
||||
|
||||
try:
|
||||
fh = open(fileout, "r")
|
||||
self.jsonData = json.loads(fh)
|
||||
except Exception, e:
|
||||
print e
|
||||
|
||||
|
||||
def __openDB(self, filein):
|
||||
conn = sqlite3.connect(filein)
|
||||
|
@ -73,19 +78,23 @@ class DBSchema:
|
|||
|
||||
|
||||
def writeFingerprint(self, filehandle):
|
||||
ahash = {}
|
||||
thash = {}
|
||||
mhash = {}
|
||||
ahash['tables'] = thash
|
||||
ahash['metadata'] = mhash
|
||||
|
||||
# metadata
|
||||
mhash['app-name'] = 'dbfp'
|
||||
mhash['app-ver'] = '0.50'
|
||||
mhash['format-ver'] = '0.90'
|
||||
|
||||
# tables
|
||||
keys = self.tables.keys()
|
||||
for key in keys:
|
||||
thash[key] = self.tables[key].fields
|
||||
json.dump(thash, filehandle, sort_keys=True, indent=4)
|
||||
|
||||
|
||||
def writeFingerprint2(self, filehandle):
|
||||
keys = self.tables.keys()
|
||||
for key in keys:
|
||||
tableDef = self.tables[key]
|
||||
tableDef.toFile(filehandle);
|
||||
|
||||
json.dump(ahash, filehandle, sort_keys=True, indent=4)
|
||||
|
||||
|
||||
def getErrorString(self, errorCode):
|
||||
|
|
28
main.py
28
main.py
|
@ -8,33 +8,35 @@ from libs import fingerprint
|
|||
|
||||
|
||||
def main():
|
||||
(filein, fileout, verbose) = parseArgs()
|
||||
#retVal = fingerprint.scanDB(filein)
|
||||
(filein, fileout, filejson, verbose) = parseArgs()
|
||||
|
||||
db = fingerprint.DBSchema()
|
||||
retVal = db.scanDBFile(filein)
|
||||
|
||||
if (retVal > 0):
|
||||
fh = open(fileout, "w")
|
||||
if (fileout):
|
||||
retVal = db.scanDBFile(filein)
|
||||
if (retVal > 0):
|
||||
fh = open(fileout, "w")
|
||||
db.debugFingerprint()
|
||||
db.writeFingerprint(fh)
|
||||
fh.close()
|
||||
else:
|
||||
print db.getErrorString(retVal)
|
||||
elif (filejson):
|
||||
db.importDBSchema(filejson)
|
||||
db.debugFingerprint()
|
||||
db.writeFingerprint(fh)
|
||||
fh.close()
|
||||
else:
|
||||
print db.getErrorString(retVal)
|
||||
|
||||
|
||||
def parseArgs():
|
||||
verbose = False
|
||||
timestr = time.strftime('%Y-%m-%d_%H%M%S', time.localtime(time.time()))
|
||||
#outfile = "telegram-data_" + timestr
|
||||
parser = argparse.ArgumentParser(description='Fingerprint a sqlite database based on its schema')
|
||||
parser.add_argument('-f', '--file', required=True)
|
||||
parser.add_argument('-f', '--file', required=False)
|
||||
parser.add_argument('-j', '--json', required=False)
|
||||
parser.add_argument('-v', '--verbose', action='store_true')
|
||||
args = parser.parse_args()
|
||||
if (args.verbose):
|
||||
verbose = args.verbose
|
||||
fileout = args.file + "_" + timestr + '.json'
|
||||
return (args.file, fileout, verbose)
|
||||
return (args.file, fileout, args.json, verbose)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
Loading…
Reference in New Issue