Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | Related Pages

monitoringDbSyncIn.py

00001 #!/usr/local/bin/python
00002 #
00003 #                               Copyright 2004
00004 #                                     by
00005 #                        The Board of Trustees of the
00006 #                     Leland Stanford Junior University.
00007 #                            All rights reserved.
00008 #
00009 
00010 __facility__ = "Online"
00011 __abstract__ = "Housekeeping Database Synch Out"
00012 __author__   = "J. Panetta <panetta@SLAC.Stanford.edu> SLAC - GLAST LAT I&T/Online"
00013 __date__     = "11/20/2004"
00014 __version__  = "$Revision: 1.1 $"
00015 __credits__  = "SLAC"
00016 
00017 
00018 import LATTE.copyright_SLAC
00019 
00020 import os, sys, struct, gzip, time
00021 from LATTE.client.gOptions         import Options
00022 import MySQLdb
00023 
00024 tlmFieldsList = "MNEMID, MNEM, DESTTYPE, EUCONV, DESCRIP, OPSYMBOL, SUBS, EUSTRING, EVENTFLAG, ARYLENGTH, LIMITS, INIT, NOTASSIGNABLE"
00025 valFieldsList = "USECS, VALUE, MNEMID, SOURCE"
00026 srcFieldsList = "SOURCE, DESCRIP"
00027 
00028 valInsert     = "insert ignore into valfields (%s) values " % valFieldsList
00029 
00030 valPackFmt    = "!ddLH"
00031 chunkSize     = 5000
00032 
00033 def dumpVALfields(inFile, db):
00034  
00035   fmtSize = struct.calcsize(valPackFmt)
00036   n = 0
00037   cursor = db.cursor()
00038   while True:
00039     if n%50 == 0:
00040       print "Optimizing VALFIELDS..."
00041       cursor.execute("optimize table valfields")
00042       
00043     valList = ""
00044     set = inFile.read((fmtSize)*chunkSize)
00045     nChunks = len(set) / fmtSize
00046     if len(set) == 0: break
00047     for i in range(nChunks):
00048       startPoint = i*(fmtSize)
00049       datum = struct.unpack(valPackFmt, set[startPoint:startPoint+fmtSize])
00050       valList += "(%s, %s, %s, %s), " % datum
00051     
00052     cursor.execute( valInsert + valList[:len(valList)-2] )
00053     db.commit()
00054     n += 1
00055     print n*chunkSize, time.time()
00056 
00057   
00058 if __name__ == '__main__':
00059   
00060   # Options, first list mandatory, second list optional 
00061   options = Options([],
00062                     [])
00063   try:
00064     options.parse()
00065   except Exception, msg:
00066     # options.usage(usage())
00067     raise Exception, msg
00068     
00069   sqlDb = MySQLdb.connect(db='FOODB', user='itosdb', host='localhost')
00070   # cursor = None
00071 
00072   valIn = gzip.open('val.out.gz')
00073   dumpVALfields(valIn, sqlDb)
00074   valIn.close()
00075   
00076   
00077 
00078   

Generated on Fri Jul 21 13:26:30 2006 for LATTE R04-12-00 by doxygen 1.4.3