Как быстро вставить записи в postgresql на python?

Пользователь

от vicenta_kertzmann , в категории: Python , 2 месяца назад

Как быстро вставить записи в postgresql на python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от maymie , 21 день назад

@vicenta_kertzmann 

Есть несколько способов для быстрой вставки записей в PostgreSQL на Python:

  1. Метод execute_values() библиотеки psycopg2:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
from psycopg2.extras import execute_values
import psycopg2

conn = psycopg2.connect(dbname="your_db_name", user="your_username",
                        password="your_password", host="your_hostname", port="your_port")

cur = conn.cursor()

insert_query = "INSERT INTO your_table_name (column_1, column_2, column_3) VALUES %s"

data = [("value_1", "value_2", "value_3"), ("value_4", "value_5", "value_6")]

execute_values(cur, insert_query, data)

conn.commit()

cur.close()
conn.close()


  1. Метод executemany() библиотеки psycopg2:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import psycopg2

conn = psycopg2.connect(dbname="your_db_name", user="your_username",
                        password="your_password", host="your_hostname", port="your_port")

cur = conn.cursor()

insert_query = "INSERT INTO your_table_name (column_1, column_2, column_3) VALUES (%s, %s, %s)"

data = [("value_1", "value_2", "value_3"), ("value_4", "value_5", "value_6")]

cur.executemany(insert_query, data)

conn.commit()

cur.close()
conn.close()


  1. Методы copy_from() и StringIO() библиотеки psycopg2:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import psycopg2
from io import StringIO

conn = psycopg2.connect(dbname="your_db_name", user="your_username",
                        password="your_password", host="your_hostname", port="your_port")

cur = conn.cursor()

insert_query = "COPY your_table_name (column_1, column_2, column_3) FROM STDIN WITH CSV"

data = StringIO()
data.write('value_1,value_2,value_3
')
data.write('value_4,value_5,value_6
')

data.seek(0)

cur.copy_from(data, 'your_table_name', sep=',')

conn.commit()

cur.close()
conn.close()


Каждый из этих методов имеет свои преимущества и ограничения, поэтому выбор конкретного способа зависит от требований вашей задачи.