📜  Python Psycopg2 – 一次查询插入多行(1)

📅  最后修改于: 2023-12-03 15:04:08.017000             🧑  作者: Mango

Python Psycopg2 – 一次查询插入多行

概述

当我们需要将多个数据行插入到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数据库一次插入多个数据行,而不是一句一句地插入。 这使得代码更加简洁和高效,并且减少了对数据库的执行查询次数。