В настоящее время я пытаюсь использовать 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](https://i.stack.imgur.com/HCYuN.png)
![processlist when the code is running](https://i.stack.imgur.com/HCeMM.png)
![enter image description here](https://i.stack.imgur.com/J77mg.png)