Вы должны дать какой-то пример данных и то, как вам нравится, как они обрабатываются. Сообщение о том, что вы храните его в MySQL или с помощью innodb, не является центральной проблемой (например, ORM это решает). Я предполагаю, что вы можете извлечь данные временных рядов в виде списка целых чисел, и вы пытаетесь найти, где пробелы начинаются / заканчиваются в этом списке.
def gaps(seq):
seq_set = set(seq) # e.g., set([0, 1, 2, 3, 7, 8, 9, 10, 16, 17, 18])
full_set = set(range(seq[-1]+1)) # set([0,1,2,3,..., 17, 18])
missing_pts = list(seq_set ^ full_set) # [4, 5, 6, 11, 12, 13, 14, 15]
missing_pts.sort() # EDIT: originally didn't have this;
# should have as sets are unordered.
missing_pt_pairs = []
first_pt = missing_pts[0]
prev_pt = missing_pts[0]
for pt in missing_pts:
if pt - prev_pt > 1:
missing_pt_pairs.append((first_pt, prev_pt))
first_pt = pt
prev_pt = pt
missing_pt_pairs.append((first_pt, pt))
return missing_pt_pairs
time_pts = [0,1,2,3,7,8,9,10,16,17,18]
gaps(time_pts) # returns [(4,6), (11,15)],
# indicating that two gaps are present starting from [4,6] and [11,15]