82 def genDb(self, dbFileName, dbName, params, folderPath, params64 = {}):
83
84
85 if self.beginRun is None:
86 raise ParameterDbFillerError ('Must set begin run number before generating db')
87 if self.endRun is None:
88 raise ParameterDbFillerError ('Must set end run number before generating db')
89 if len(params) == 0:
90 raise ParameterDbFillerError ('No parameters for db ' + dbName)
91
92
93 try:
94 os.remove(dbFileName)
95 print ("ParameterDbFiller.genDb: Removed db", dbFileName)
96 except Exception:
97 pass
98
99
100 dbSvc=cool.DatabaseSvcFactory.databaseService()
101
102
103 dbstring="sqlite://;schema=" + dbFileName + ";dbname=" + dbName
104 try:
105 db=dbSvc.createDatabase(dbstring)
106 except Exception as e:
107 print ('ParameterDbFiller.genDb: Problem creating database',e)
108 sys.exit(-1)
109 print ("ParameterDbFiller.genDb: Created database",dbstring)
110
111
112 spec=cool.RecordSpecification()
113 for key in params:
114 spec.extend(key, cool.StorageType.String4k)
115 pass
116
117 for key in params64:
118 spec.extend(key, cool.StorageType.String64k)
119
120
121 desc = '<timeStamp>run-event</timeStamp><addrHeader><address_header service_type="71" clid="40774348" /></addrHeader><typeName>AthenaAttributeList</typeName>'
122
123
124
125
126
127 folderSpec = cool.FolderSpecification(cool.FolderVersioning.SINGLE_VERSION, spec)
128 myfolder = db.createFolder(folderPath, folderSpec, desc, True)
129
130
131 data = cool.Record(spec)
132 for k, v in params.items():
133 data[k] = v
134 for k, v in params64.items():
135 data[k] = v
136
137 print ("ParameterDbFiller.genDb: Recording parameters", data)
138
139
140 myfolder.storeObject(self.beginRun, self.endRun, data, 0)
141 print ("ParameterDbFiller.genDb: Stored object")
142
143
144 db.closeDatabase()
145
146
147 self.dumpDb(dbstring)
148