Я пытаюсь прочитать несколько столбцов из трех разных таблиц MySQL в трех разных фреймах.pandas read_sql необычно медленный
Это не займет много времени, чтобы читать из базы данных, но фактически помещать их в кадр данных довольно медленно.
start_time = time.time()
print('Reading data from database...')
from sqlalchemy import create_engine
q_crash = 'SELECT <query string> FROM table1'
q_vehicle = 'SELECT <query string> table2'
q_person = 'SELECT <query string> FROM table3'
engine = create_engine('mysql+pymysql://user:[email protected]:port/dbasename')
print('Database time: {:.1f}'.format(time.time() - start_time))
crash = pd.read_sql_query(q_crash, engine)
print('Read_sql time for table 1: {:.1f}'.format(time.time() - start_time))
vehicle = pd.read_sql_query(q_vehicle, engine)
print('Read_sql time for table 2: {:.1f}'.format(time.time() - start_time))
person = pd.read_sql_query(q_person, engine)
print('Read_sql time for table 3: {:.1f}'.format(time.time() - start_time))
Выход:
Reading data from database...
Database time: 0.0
Read_sql time for table 1: 13.4
Read_sql time for table 2: 30.9
Read_sql time for table 3: 49.4
Это нормально? Таблицы довольно большие - таблица 3 составляет более 601 000 строк. Но pandas обрабатывал большие наборы данных без сучка и задоринки всякий раз, когда я использую read_csv.
Вы читаете из таблиц или Просмотры? – agold
Как долго выполняются запросы, когда вы запускаете их из командной строки или из какого-либо инструмента, такого как MySQL workbench (работает на том же компьютере, на котором установлен ваш скрипт Python)? – scomes
Я никогда не создавал представления и ничего не знаю о них, поэтому я предполагаю, что читаю из таблицы. @scomes, когда я запускаю тот же запрос из командной строки, он занимает меньше секунды. – ale19