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

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

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

    Скидки до 10%

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

Как сделать множественный insert одной записью?

r4khic

Member
17.09.2019
11
0
BIT
0
Доброго времени суток всем ! Есть такой запрос:

Python:
self.cursor.execute('''INSERT INTO items (res_id, log_id, link, title, content, n_date, nd_date, s_date, not_date)
                       VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)''',
                       ( res_id,
                         log_id,
                         str(resource_link),
                         str(item_title),
                         str(item_content),
                         str(n_date),
                         nd_date,
                         s_date,
                         not_date
                       )
                                )
Как можно сделать чтобы этот запрос добавлял новости не по одной новости за раз,а за один раз 100 новостей?
Я смотрел такой пример множественного insert в интернете:
Python:
INSERT INTO MyTable
  ( Column1, Column2, Column3 )
VALUES
  ('John', 123, 'Lloyds Office'),
  ('Jane', 124, 'Lloyds Office'),
  ('Billy', 125, 'London Office'),
  ('Miranda', 126, 'Bristol Office');
Но в этом случае надо указать VALUES столько раз,сколько надо.
 

mrOkey

Well-known member
14.11.2017
967
976
BIT
0
если данные в какой-то таблице (t2) можно так ещё
SQL:
insert into t1 (f1,f2) select f1,f2 from t2

это при условии что типы совпадают или могут быть приведены
 

r4khic

Member
17.09.2019
11
0
BIT
0
если данные в какой-то таблице (t2) можно так ещё
SQL:
insert into t1 (f1,f2) select f1,f2 from t2

это при условии что типы совпадают или могут быть приведены
Я думаю такой вариант не подойдет лично в моем случае. Благодарю на то что вы обратили внимание на мой вопрос

Python:
INSERT INTO MyTable
  ( Column1, Column2, Column3 )
VALUES
  ('John', 123, 'Lloyds Office'),
  ('Jane', 124, 'Lloyds Office'),
  ('Billy', 125, 'London Office'),
  ('Miranda', 126, 'Bristol Office');
Я вот думаю использовать пример множественного insert но тут такая делюга,то что мне придется писать
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s) 100 раз.Не могли бы вы подсказать как сделать чтобы values было прописано 100 раз?
 

mrOkey

Well-known member
14.11.2017
967
976
BIT
0
Python:
INSERT INTO MyTable
  ( Column1, Column2, Column3 )
VALUES
  ('John', 123, 'Lloyds Office'),
  ('Jane', 124, 'Lloyds Office'),
  ('Billy', 125, 'London Office'),
  ('Miranda', 126, 'Bristol Office');
Я вот думаю использовать пример множественного insert но тут такая делюга,то что мне придется писать
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s) 100 раз.Не могли бы вы подсказать как сделать чтобы values было прописано 100 раз?
Вообще придётся писать по 100 раз ведь sql не знает откуда ему брать данные для Инсерта
Некорректный вопрос. Попробуем так: Откуда данные?
 

mrOkey

Well-known member
14.11.2017
967
976
BIT
0
Данные с парсера на питоне. Я хочу чтобы эти данные за один инсерт инсертили 100 новостей
Ну вот тебе в лоб решение: пусть питон парсит данные в массив (далее будет псевдокод, потому что я не знаю питон). Далее делаешь строку
Python:
insertQueryString = 'INSERT INTO items (res_id, log_id, link, title, content, n_date, nd_date, s_date, not_date)'

Потом проходишься по массиву c нужными данными в цикле
Python:
for item in [ данные от парсера ]
  // тут к строке добавляешь строку VALUES()
  value = (```VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s) \n''',
                       ( item.res_id,
                         item.log_id,
                         str(item.resource_link),
                         str(item.item_title),
                         str(item.item_content),
                         str(item.n_date),
                         Item.nd_date,
                         item.s_date,
                         item.not_date
                       ))

   insertQueryString.Append(value)
}

Потом заставляешь выполнить сгенерированный инсерт
Python:
self.cursor.execute(str)
 
Последнее редактирование:

r4khic

Member
17.09.2019
11
0
BIT
0
Ну вот тебе в лоб решение: пусть питон парсит данные в массив (далее будет псевдокод, потому что я не знаю питон). Далее делаешь строку
Python:
insertQueryString = 'INSERT INTO items (res_id, log_id, link, title, content, n_date, nd_date, s_date, not_date)'

Потом проходишься по массиву c нужными данными в цикле
Python:
for item in [ данные от парсера ]
  // тут к строке добавляешь строку VALUES()
  value = (```VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s) \n''',
                       ( item.res_id,
                         item.log_id,
                         str(item.resource_link),
                         str(item.item_title),
                         str(item.item_content),
                         str(item.n_date),
                         Item.nd_date,
                         item.s_date,
                         item.not_date
                       ))

   insertQueryString.Append(value)
}

Потом заставляешь выполнить сгенерированный инсерт
Python:
self.cursor.execute(str)
благодарю за ответ !
 
Мы в соцсетях:

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