Ошибка Python «Команды не синхронизированы» при вставке большого количества данных в MySQL - PullRequest
0 голосов
/ 01 ноября 2018

В настоящее время я пытаюсь ускорить процесс передачи данных через сторонние инструменты. Я написал функцию для массового проталкивания операторов вставки в нашу базу данных MySQL, но получаю следующую ошибку:

_mysql_exceptions.ProgrammingError: (2014, "Commands out of sync; you can't run this command now")

Функция, которую я написал, выглядит следующим образом, принимая record_array (массив диктов, содержащий данные, которые нужно передать в таблицу MySQL) и tablename (строка, содержащая имя таблицы):

def insert_update_bulk(self, record_array, tablename):
    session = self.Session()
    self.merge_query = ""
    for r in record_array:
        query = '''INSERT INTO {} ('''.format(tablename)
        for k in r.keys():
            query += '{}, '.format(k)
        query = query[:-2] + ''') VALUES ('''
        for v in r.values():
            if type(v) == int:
                query += '{},'.format(v)
            else:
                query += '"{}",'.format(str(v).replace('"', "'").replace('\n', ' ').replace('\r', ' '))
        query = query[:-1] + ''') ON DUPLICATE KEY UPDATE '''
        for k in r.keys():
            if type(r[k]) == int:
                query += '{}={},'.format(k, str(r[k]).replace('"', "'")).replace("'None'", 'NULL')
            else:
                query += '{}="{}",'.format(k, str(r[k]).replace('"', "'")).replace("'None'", 'NULL')

        query = query[:-1] + '; '
        self.merge_query += query
    session.execute(self.merge_query.replace('%', '%%'))
    self.Session.close_all()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...