Поиск таблиц в базе данных для строк с одинаковым первичным ключом - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть база данных my_database.db с тысячами таблиц, состоящих из временных рядов тысяч временных точек для примерно десяти переменных. Пример приведен в приведенном ниже коде только с пятью таблицами, соответствующими названиям городов, но в моей реальной задаче у меня тысячи. Мне нужно выбрать строку в каждой таблице, соответствующую метке времени date_str (первичный ключ для каждой таблицы), если эта метка времени существует в этой таблице, и, в конце, вернуть таблицу, которая содержит эти строки вместе с именем таблица, из которой получена строка.

Есть ли способ ускорить этот код, который не включает в себя реструктуризацию всей базы данных (возможно, способ вызвать SELECT для всех таблиц одновременно вместо циклического прохождения столы)? Обратите внимание, что cities является фиксированным, а date_str является параметром.

import sqlite3
import pandas as pd

conn = sqlite3.connect(f'my_database.db')
c = conn.cursor()

cities = ('sanfrancisco', 'dallas', 'newyork', 'chicago', 'miami')
columns = ('timestamp', 'population', 'averageincome')

def get_data(date_str):
    data = []
    for city in cities:
        c.execute(f"SELECT * from {city} WHERE timestamp='{date_str}'")
        result = c.fetchall()

        if result:  # will be False if no data was recorded for date given by date_str
            data.append([city] + list(result[0]))

    return pd.DataFrame(data, columns=columns)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...