def insert(self, data, hostnames):
"""
Insert a job record
"""
cur = self.con.cursor()
try:
query = "INSERT INTO job (resource_id, local_job_id, start_time_ts, end_time_ts, record) VALUES(%s,%s,%s,%s,COMPRESS(%s))"
cur.execute(query, data)
for host in hostnames:
if host not in self._hostlistcache:
cur.execute("INSERT IGNORE INTO hosts (hostname) VALUES (%s)", [host])
self.con.commit()
self._hostlistcache[host] = 1
cur.execute("INSERT INTO jobhosts (jobid, hostid) VALUES( (SELECT id FROM job WHERE resource_id = %s AND local_job_id = %s AND end_time_ts = %s), (SELECT id FROM hosts WHERE hostname = %s) )",
[data[0], data[1], data[3], host])
cur.execute("INSERT INTO process (jobid, ingest_version) VALUES ( (SELECT id FROM job WHERE resource_id = %s AND local_job_id = %s AND end_time_ts = %s), %s)", [data[0], data[1], data[3], INGEST_VERSION])
except mdb.IntegrityError as e:
if e[0] != 1062:
raise e
# else:
# Todo - check that the blobs match on duplicate records
self.buffered += 1
if self.buffered > 100:
self.con.commit()
self.buffered = 0
评论列表
文章目录