Проблемы при вводе списка в базу данных MySQL - PullRequest
0 голосов
/ 23 апреля 2020

В настоящее время я пытаюсь использовать python для вставки данных о запасах в таблицу MySQL (см. Ниже). К сожалению, когда я запускаю код, он не обнаруживает никаких ошибок, но, похоже, занимает очень много времени - он не был завершен в течение 10-15 минут, поэтому мне пришлось вручную отменить. Я не уверен, происходит ли это из-за моего кода или если вставка данных в таблицу SQL является по своей сути медленным процессом.

Я пытаюсь вставить список кортежей длиной примерно 2,3 миллиона элементов. Учитывая, что каждый кортеж содержит 8 элементов, это создает в общей сложности 18,3 миллиона точек данных. Код, который я использую для вставки этого списка кортежей, приведен ниже.

db_host = 'localhost'
db_user = 'root'
db_pass = 'password'
db_name = 'securities_master'   
connection = mysql.connector.connect(host=db_host, user=db_user, passwd=db_pass, db=db_name)

column_str = """price_date, symbol_id, open_price, high_price, low_price, close_price, adj_close_price, volume"""
insert_str = ("%s, " * 8)[:-2]
final_str = "INSERT INTO daily_price (%s) VALUES (%s)" % (column_str, insert_str)

cursor = connection.cursor()
cursor.executemany(final_str, list_of_tuples)
connection.commit()
print("Daily prices were successfully added.")

Где list_of_tuples - вышеупомянутый список. Кроме того, когда я пытаюсь выполнить тот же процесс, но с меньшим набором данных (т. Е. Списком из 50 000 кортежей), я сталкиваюсь с той же проблемой. Я уже настроил максимально допустимые пакеты и время ожидания блокировки InnoDB, как это предлагалось на других форумах.

Любая помощь будет принята с благодарностью.

general log

processlist when the code is running

enter image description here

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