Найти - Пользователи
Полная версия: Как сделать множественный insert одной записью?
Начало » Python для новичков » Как сделать множественный insert одной записью?
1
r4khic
Есть такой запрос:
 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 столько раз,сколько надо.
Striver
вместо execute используй executemany. Значения во втором параметре нужно объединить в список кортежей.
https://habr.com/ru/post/321510/
r4khic
Striver
Значения во втором параметре нужно объединить в список кортежей/
То есть вы имеете в виду.Что значение VALUES нужно поместить массив ? А потом с массива в кортеж ?
Striver
То есть вы имеете в виду.Что значение 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()

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB