Самый быстрый способ извлечения данных временных рядов из SQLite по одной строке за раз - PullRequest
0 голосов
/ 29 июня 2019

У меня есть 8 таблиц, каждая из которых содержит около 4 миллионов строк в одном и том же диапазоне дат и времени.Я пытаюсь написать метод, который можно использовать в цикле for, чтобы получить данные для «текущей минуты» из каждой таблицы, что-то сделать с этими данными, затем получить данные за следующую минуту и ​​т. Д.

Я попробовал это сначала:

def get_data(self,table_name,time):
    self.c.execute('SELECT * FROM "{}" WHERE time="{}"'.format(table_name,time))
    resp = self.c.fetchall()
    return resp

Это было слишком медленно, поэтому я попробовал это:

def get_data(self,table_name,time):
    self.c.execute('SELECT * FROM "{}"'.format(table_name))
    for row in self.c:
        if row[0] == time:
            return [row[0],row[4],row[8]]

Сначала это быстрее, но занимает больше времени, так какуглубляется в таблицу.

Конечная цель выглядит примерно так:

now = start_time
data = {}

while True:
    for table in table_list:
        data[table] = get_data(table,now)
    # do something with data
    now = add_minute(now)
    if now = end_time:
        break
    else:
        continue

Есть ли способ быстро найти строку со временем, которое я ищу в каждой таблице, ивернуть их мне, или мне нужно найти другое решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...