• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Не работает условие python

r4khic

Member
17.09.2019
11
0
BIT
0
Я пытаюсь сделать проверку то есть проверку если в переменной sql набралось 100 ссылок.То тогда производим множественный insert.
Что это реализовать написал такой код:
Python:
count = 0
for resource_link in resources_links:
    try:
        exist_link = parser.check_item(resource_link)
        if exist_link is not True:
            goose_date = parser.get_goose_date(resource_link)
            time_now = parser.get_time_now()
            if goose_date is not None:
                #if goose_date <= time_now:
                date_parsed = parser.get_converted_date(goose_date)
                nd_date = parser.get_nd_date(date_parsed)
                not_date = parser.get_not_date(date_parsed)
                n_date = parser.get_n_date()
                s_date = parser.get_s_date()
                log_id = parser.get_log_id()

                item_title = parser.get_item_title(resource_link)
                item_content = parser.get_item_content(resource_link)

                if item_title != '' and item_content != '':
                    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

                    count += 1
                    if count == 100:
                        huge_insert = parser.huge_insert_db(result)
                        print('Insert 100 новостей произведен')
                        count = 0
                        result = ''
                else:
                    print('Нету заголовка или котента.')
            else:
                print('Гусь не нашел дату.')
        else:
            print('Новость уже есть в базе.')
    except Exception as e:
        print(f'Ошибка: {str(e)}')
Но мое условие на добавление множественного insrt не работает.Помогите пожалуйста
Вот сам метод huge_insert:
Python:
def huge_insert_db(self, sql):
    self.cursor.execute(sql)
 
Последнее редактирование:

Tony

Green Team
21.09.2019
87
14
BIT
0
В данном примере, ты каждую итерацию цикла перезаписываешь пременную result, а через 100 итераций ты пишешь последнюю новость в базу. Тебе нужно создать массив и записывать result в него, затем проверять длину массива и когда его длина достигнет 100, обходить его циклом и писать данные в базу. Подсчёт итераций в данном случае не нужен.
 

r4khic

Member
17.09.2019
11
0
BIT
0
В данном примере, ты каждую итерацию цикла перезаписываешь пременную result, а через 100 итераций ты пишешь последнюю новость в базу. Тебе нужно создать массив и записывать result в него, затем проверять длину массива и когда его длина достигнет 100, обходить его циклом и писать данные в базу. Подсчёт итераций в данном случае не нужен.
Я создал инт переменную и увеличивал на единицу после каждого дополненного запроса.
Как только она равно 100 - я делаю вставку и обнуляю переменную. Зачем мне массив?
 

Tony

Green Team
21.09.2019
87
14
BIT
0
ОК. Что у тебя лежит в пременной result когда твоя int переменная == 100 и срабатывает huge_insert_db?
 

Tony

Green Team
21.09.2019
87
14
BIT
0
Вот смотри, у тебя:
Python:
result = "строка" #тобишь твой запрос к базе данных
И каждую итерацию цикла:
Python:
for resource_link in resources_links:
    ...
ты Не Добавляешь новые данныё куда либо, а тупо перезаписываешь переменные sql, values и result новыми данными. В итоге когда счётчик count == 100, в result лежит запрос с сотой статьёй.
Тебе нужно создать массив и каждую итерацию цикла добавлять в него переменную result, чтоб получилось так:
articles = [result, result1, result2, ... , result99]
И когда длина массива articles будет равна 100, отдавать его в функцию huge_insert_db
 

r4khic

Member
17.09.2019
11
0
BIT
0
Вот смотри, у тебя:
Python:
result = "строка" #тобишь твой запрос к базе данных
И каждую итерацию цикла:
Python:
for resource_link in resources_links:
    ...
ты Не Добавляешь новые данныё куда либо, а тупо перезаписываешь переменные sql, values и result новыми данными. В итоге когда счётчик count == 100, в result лежит запрос с сотой статьёй.
Тебе нужно создать массив и каждую итерацию цикла добавлять в него переменную result, чтоб получилось так:
articles = [result, result1, result2, ... , result99]
И когда длина массива articles будет равна 100, отдавать его в функцию huge_insert_db
Понял ! Благодарю за помощь !
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!