Radzhab
@Radzhab

Массовое добавление строк в базу?

Хочу добавить большое количество данных в БД. Когда список items маленький все работает хорошо. Но как только я задаю большой список у меня выдаёт ошибку
e
xcept -> (<class 'pymysql.err.OperationalError'>, OperationalError(2014, 'Command Out of Sync'), <traceback object at 0x7feac8cfac88>)
except -> (<class 'struct.error'>, error('unpack_from requires a buffer of at least 8 bytes',), <traceback object at 0x7feac8cfe7c8>)
except -> (<class 'pymysql.err.InternalError'>, InternalError('Packet sequence number wrong - got 4 expected 1',), <traceback object at 0x7feac8cfe648>)

<code lang="python">
def addUsersBulk(Admin, items):
    try:
        with connection.cursor() as cursor:

            for item in items:
                sql = 'Insert INTO userdata(AdminId, Username) VALUES (%s, %s)'
                cursor.execute(sql,(Admin,item))
            connection.commit()
    except Exception as e:
        print("except -> " + str(sys.exc_info()))
        x=3
    finally:
        x =2
</code>
  • Вопрос задан
  • 367 просмотров
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Отправлять большое количество запросов в цикле - довольно плохая идея.
Лучше делать multiple insert
INSERT INTO tbl_name (a,b,c) VALUES (1,2,3),(4,5,6),(7,8,9);

или, при действительно большом объеме, применять

LOAD DATA INFILE
LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы