Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 4, 2019 08:16:41

r4khic
Зарегистрирован: 2019-07-23
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Есть такой запрос:

 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 в интернете:
 INSERT INTO MyTable
  ( Column1, Column2, Column3 )
VALUES
  ('John', 123, 'Lloyds Office'), 
  ('Jane', 124, 'Lloyds Office'), 
  ('Billy', 125, 'London Office'),
  ('Miranda', 126, 'Bristol Office');
Но в этом случае надо указать VALUES столько раз,сколько надо.

Офлайн

#2 Окт. 4, 2019 08:33:39

Striver
От:
Зарегистрирован: 2006-10-26
Сообщения: 247
Репутация: +  22  -
Профиль   Отправить e-mail  

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

вместо execute используй executemany. Значения во втором параметре нужно объединить в список кортежей.
https://habr.com/ru/post/321510/



Офлайн

#3 Окт. 4, 2019 08:47:11

r4khic
Зарегистрирован: 2019-07-23
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Striver
Значения во втором параметре нужно объединить в список кортежей/
То есть вы имеете в виду.Что значение VALUES нужно поместить массив ? А потом с массива в кортеж ?

Офлайн

#4 Окт. 4, 2019 15:07:09

Striver
От:
Зарегистрирован: 2006-10-26
Сообщения: 247
Репутация: +  22  -
Профиль   Отправить e-mail  

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

То есть вы имеете в виду.Что значение VALUES нужно поместить массив ? А потом с массива в кортеж ?
Берём твой пример:
  INSERT INTO MyTable
  ( Column1, Column2, Column3 )
и делаем так (пишу для случая СУБД Postgres, по идее для других так же):
 data = [('John', 123, 'Lloyds Office'), 
  ('Jane', 124, 'Lloyds Office'), 
  ('Billy', 125, 'London Office'),
  ('Miranda', 126, 'Bristol Office')]
SQL = "INSERT INTO MyTable VALUES (%s, %s, %s)"
cursor.executemany(SQL, data)
cursor.connection.commit()



Отредактировано Striver (Окт. 4, 2019 15:07:38)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version