📅  最后修改于: 2023-12-03 15:04:08.017000             🧑  作者: Mango
当我们需要将多个数据行插入到PostgreSQL数据库中时,使用单个insert语句可能非常繁琐。 Psycopg2是PostgreSQL数据库的一种Python库,可以大大简化多行插入操作。
在开始操作之前,您需要使用pip安装psycopg2库:pip install psycopg2
另外,您需要一个PostgreSQL数据库。 登录到您的PostgreSQL数据库,创建以下名称为students的表:
CREATE TABLE students (
id serial PRIMARY KEY,
name VARCHAR (50) NOT NULL,
age smallint NOT NULL,
gender VARCHAR (10) NOT NULL
);
此表将用于演示如何使用psycopg2库以一次查询插入多行。
在您可以向数据库中插入数据之前,必须建立到数据库的连接。 Psycopg2提供了一个connect()
方法,该方法返回一个连接对象。 要建立连接,请使用以下代码:
import psycopg2
conn = psycopg2.connect(database="your_database", user="your_username", password="your_password", host="your_hostname", port="your_port")
请根据您的数据库设置更改上述参数以创建连接对象。
一旦建立了连接,就可以使用insert语句将数据插入到数据库中。 但是,插入多行数据时,一句一句地插入可能不是最好的选择。
Psycopg2提供了一个executemany()
方法,在一次查询中插入多行数据。 请看以下代码示例:
import psycopg2
conn = psycopg2.connect(database="your_database", user="your_username", password="your_password", host="your_hostname", port="your_port")
cur = conn.cursor()
# 插入多行数据
cur.executemany("INSERT INTO students (name, age, gender) VALUES (%s, %s, %s)", [
('Peter', 20, 'Male'),
('Mary', 22, 'Female'),
('John', 21, 'Male'),
('Jane', 23, 'Female')
])
conn.commit()
print('Data Inserted Successfully')
conn.close()
在上面的代码中,我们首先使用conn.cursor()
方法创建一个游标对象。 然后我们使用executemany()
方法,将多个数据行一次性插入到数据库中。 此方法将执行单个insert查询,并使用参数列表中的值替换每个“% s”占位符。
最后,我们使用commit()
方法提交更改,并使用close()
方法关闭连接。
使用psycopg2库的executemany()
方法,我们可以向PostgreSQL数据库一次插入多个数据行,而不是一句一句地插入。 这使得代码更加简洁和高效,并且减少了对数据库的执行查询次数。