Python 操作 PostgreSQL 数据库完整指南:连接、建表与增删改查

认真发呆
认真发呆
发布时间:2026-10-12| 3人浏览过
原创

本文详细介绍如何使用 Python 的 psycopg2 模块连接 PostgreSQL 数据库。内容涵盖从环境准备、建立数据库连接,到创建表、插入、查询、更新及删除记录的完整代码示例,帮助开发者快速掌握 Python 对 PostgreSQL 的基础操作。

本文介绍利用 Python 操作 PostgreSQL 数据库的具体方法,供读者参考学习。

本文示例基于 Python 3.7.0 版本环境。

PostgreSQL 数据库可通过 psycopg2 模块与 Python 进行集成。

psycopg2 是专为 Python 设计的 PostgreSQL 数据库适配器。

psycopg2 具有体积小、运行速度快且稳定性高的特点。需要注意的是,该模块默认并不随 Python 2.5.x 版本发布,需单独安装。

pip3 install python-psycopg2
pip3 install psycopg2-binary

数据库连接

以下 Python 代码演示了如何连接到现有数据库。若目标数据库尚不存在,系统将自动创建该数据库,并最终返回一个数据库连接对象。

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432")

print("Opened database successfully")

代码中指定使用 testdb 作为数据库名称。若数据库连接成功建立,控制台将输出以下提示信息:

Open database successfully

创建数据表

以下 Python 程序用于在先前创建的数据库(testdb)中创建一个新表:

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432")
print("Opened database successfully")

cur = conn.cursor()
cur.execute('''CREATE TABLE COMPANY
    (ID INT PRIMARY KEY   NOT NULL,
    NAME      TEXT  NOT NULL,
    AGE      INT   NOT NULL,
    ADDRESS    CHAR(50),
    SALARY     REAL);''')
print "Table created successfully"

conn.commit()
conn.close()

运行上述程序后,将在数据库 testdb 中成功创建 COMPANY 表,并显示如下消息:

Opened database successfully Table created successfully

插入数据操作

以下 Python 程序演示了如何向上述示例中创建的 COMPANY 表中插入记录:

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432")
print("Opened database successfully")

cur = conn.cursor()

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
   VALUES (1, 'Paul', 32, 'California', 20000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
   VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
   VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
   VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");

conn.commit()
print("Records created successfully");
conn.close()

执行该程序后,指定的记录将被插入到 COMPANY 表中,并显示以下两行输出:

Opened database successfully Records created successfully

查询数据操作

以下 Python 程序展示了如何从 COMPANY 表中检索并显示所有记录:

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432")
print("Opened database successfully")

cur = conn.cursor()

cur.execute("SELECT id, name, address, salary from COMPANY")
rows = cur.fetchall()
for row in rows:
  print("ID = ", row[0])
  print("NAME = ", row[1])
  print("ADDRESS = ", row[2])
  print("SALARY = ", row[3], "\n")

print("Operation done successfully");
conn.close()

运行上述程序后,将输出以下结果:

Opened database successfully ID = 1 NAME = Paul ADDRESS = California SALARY = 20000.0

ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000.0

ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000.0

ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000.0

Operation done successfully

更新数据操作

以下 Python 代码演示了如何使用 UPDATE 语句更新记录,随后从 COMPANY 表中获取并显示更新后的数据:

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432")
print("Opened database successfully")

cur = conn.cursor()

cur.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")
conn.commit
print("Total number of rows updated :", cur.rowcount)

cur.execute("SELECT id, name, address, salary from COMPANY")
rows = cur.fetchall()
for row in rows:
  print("ID = ", row[0])
  print("NAME = ", row[1])
  print("ADDRESS = ", row[2])
  print("SALARY = ", row[3], "\n")

print("Operation done successfully");
conn.close()

Python

运行上述程序后,将产生以下结果:

Opened database successfully Total number of rows updated : 1 ID = 1 NAME = Paul ADDRESS = California SALARY = 25000.0

ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000.0

ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000.0

ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000.0

Operation done successfully

删除数据操作

以下 Python 代码演示了如何使用 DELETE 语句删除记录,随后从 COMPANY 表中获取并显示剩余记录:

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432")
print("Opened database successfully")

cur = conn.cursor()

cur.execute("DELETE from COMPANY where ID=2;")
conn.commit
print("Total number of rows deleted :", cur.rowcount)

cur.execute("SELECT id, name, address, salary from COMPANY")
rows = cur.fetchall()
for row in rows:
  print("ID = ", row[0])
  print("NAME = ", row[1])
  print("ADDRESS = ", row[2])
  print("SALARY = ", row[3], "\n")

print("Operation done successfully");
conn.close()

运行上述程序后,将产生以下结果:

Opened database successfully Total number of rows deleted : 1 ID = 1 NAME = Paul ADDRESS = California SALARY = 20000.0

ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000.0

ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000.0

Operation done successfully

更多关于 Python 数据库操作的内容,感兴趣的读者可参考本站专题:《Python常见数据库操作技巧汇总》、《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》。

希望本文所述的 Python 数据库操作示例能对读者的程序设计工作有所帮助。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。