SQL-оператор вставки Python вставляет только часть записей - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь выяснить, почему моя команда SQL-insert сталкивается с проблемами. Я пытаюсь ежедневно вставлять ~ 5k записей в таблицу и разработал цикл for для создания SQL-команды, которая выполняет INSERT INTO для каждой из этих записей.

Я использую приведенный ниже кодэто генерирует одну массивную строку, которая затем запускается в среде SQL.

Когда я запускаю этот код, я получаю нечетное количество вставленных записей (может быть 300, 1000 или 600). Как ни странно, если я скопирую строку total_sql напрямую на SQL-сервер и запустю ее, он создаст все записи. Поэтому я считаю, что существует проблема с удаленным запуском этого SQL-кода.

У кого-нибудь была подобная проблема, как эта раньше? Сначала я думал, что это связано с длиной строки, но это не объясняет, почему количество записей меняется каждый раз, когда я запускаю его, поэтому у меня заканчиваются идеи .. Спасибо!

total_sql = ''
n= 0
for i in range(Mydata.shape[0]):
    current_line = '''INSERT INTO TableName (ColumnName)
    VALUES
    (''' + My_data[i] "') "
    total_sql = total_sql + current_line
    n+=1

cursor.execute(total_sql)

К вашему сведению, у меня изначально была система, которая выполняла вставку для каждой отдельной строки, но она оказалась медленной и с большей вероятностью приводила к тайм-аутам связи с сервером.

1 Ответ

0 голосов
/ 24 октября 2019

Как насчет использования панд вместо этого?

Вам нужно только сначала перейти на информационный фрейм. Какой сейчас формат?

import pandas as pd

df.to_sql('TABLE NAME',connection, if_exists = 'append',index=False)

Где df - ваши данные, преобразованные в фрейм данных.

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