r4khic
@r4khic
Начинающий кодер на python

Как сделать условие на insert?

Всем привет.Я пытаюсь сделать множественный insert.Чтобы сделать это.
У меня есть переменная sql и она содержит в себе такой запрос:
тык
sql = '''INSERT INTO items (res_id, log_id, link, title, content, n_date, nd_date, s_date, not_date)'''

И есть переменная values:
тык
values = ''' VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') ''' % (
                                res_id,
                                log_id,
                                resource_link,
                                item_title,
                                item_content,
                                n_date,
                                nd_date,
                                s_date,
                                not_date)

В итоге происходит конкатенация:result = sql + values
И переменная result содержит в себе такой sql запрос:
тык
INSERT INTO items (res_id, log_id, link, title, content, n_date, nd_date, s_date, not_date) VALUES ('35', '1', 'http://bryansk-news.net/society/2019/10/05/37343.html', 'Сегодня брянских водителей проверят на алкоголь', 'Сегодня брянских водителей проверят на алкоголь
Сегодня, 07:14
5 октября ждать нетрезвых автомобилистов будут в районе д. 1 по проспекту Московскому в Фокинском районе.
Останавливать транспортные средства будут с 23 часов 25 минут в течение получаса.
Если вы стали свидетелем нарушений ПДД, сообщите об этом ближайшему наряду ДПС или в дежурную часть по телефону 74-71-02.
Источник: https://news.nashbryansk.ru
', 'Added by Raha', '1570227276', '1570255714.6161082', '2019-10-05')

Вот вызов метода execute:huge_insert = parser.huge_insert_db(result)
Вот сам метод:
def huge_insert_db(self, result):
        self.cursor.execute(result)
        print('Запись 100 новостей успешно произведена!')

Я парсю около 50 ресурсов,и я не знаю как сделать проверку.То есть проверку если в переменной result набралось 100 ссылок.То тогда производим множественный insert.
Я пытался сделать так,но это не работает:
тык
result_list = []
                            sql = '''INSERT INTO items (res_id, log_id, link, title, content, n_date, nd_date, s_date, not_date)'''
                            values = ''' VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') ''' % (
                                res_id,
                                log_id,
                                resource_link,
                                item_title,
                                item_content,
                                n_date,
                                nd_date,
                                s_date,
                                not_date)
                            result = sql + values
                            result_list.append(result)
                            if len(result_list) == 100:
                                huge_insert = parser.huge_insert_db(result)
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
VladimirAndreev
@VladimirAndreev
php web dev
Создайте инт переменную и увеличивайте на единицу после каждого дополнения запроса.
Как только она равно 100 - делайте вставку и обнулите переменную.
И в конце обработки не забудьте вставить последние данные, если, конечно, число строк не делится до целого на 100
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@o5a
Для множественной вставки есть функция executemany, она вместо списка значений принимает вложенный список (по количеству строк вставки). Будет проще формировать массив данных (append каждого нового списка данных) и отслеживать кол-во записей в нем (просто длина 2-мерного массива).
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
11 дек. 2019, в 05:36
5000 руб./за проект
11 дек. 2019, в 01:58
2500 руб./за проект
11 дек. 2019, в 01:57
1000 руб./в час