在Python开发中对接PostgreSQL数据库时,psycopg2是最主流的第三方适配器,它提供了对PostgreSQL数据库的全面支持,兼容大部分Python版本,性能稳定且使用门槛低。下面我们详细介绍它的配置和使用的完整流程。

psycopg2安装步骤
首先需要将psycopg2安装到当前Python环境中,根据使用场景可以选择不同的安装包:
- 如果是普通开发场景,直接安装二进制版本即可,不需要额外配置PostgreSQL依赖
- 如果需要自定义编译或者有特殊功能需求,可以安装源码版本
普通安装命令如下:
# 安装二进制版本,适合大部分场景 pip install psycopg2-binary # 如果需要源码版本,使用下面的命令 pip install psycopg2
核心连接参数配置
使用psycopg2连接PostgreSQL需要配置几个核心参数,这些参数对应PostgreSQL数据库的服务配置:
| 参数名 | 含义 | 示例值 |
|---|---|---|
| host | 数据库服务所在的主机地址 | 127.0.0.1 或者 192.168.0.1 |
| port | 数据库服务的端口号 | 5432 |
| database | 要连接的具体数据库名称 | test_db |
| user | 数据库登录用户名 | postgres |
| password | 对应用户的登录密码 | 123456 |
基础连接示例
下面是使用psycopg2建立数据库连接的基础代码示例,包含连接创建和关闭的完整流程:
import psycopg2
# 配置连接参数
db_config = {
"host": "127.0.0.1",
"port": 5432,
"database": "test_db",
"user": "postgres",
"password": "123456"
}
# 建立连接
try:
conn = psycopg2.connect(**db_config)
print("数据库连接成功")
# 创建游标对象,用于执行SQL语句
cursor = conn.cursor()
except Exception as e:
print(f"连接失败,错误信息:{e}")
finally:
# 关闭连接和游标
if "cursor" in locals():
cursor.close()
if "conn" in locals():
conn.close()
print("数据库连接已关闭")
常见增删改查操作配置
查询操作
查询操作需要执行SQL后通过游标获取结果:
import psycopg2
db_config = {
"host": "127.0.0.1",
"port": 5432,
"database": "test_db",
"user": "postgres",
"password": "123456"
}
conn = psycopg2.connect(**db_config)
cursor = conn.cursor()
# 执行查询SQL
query_sql = "SELECT id, name FROM user_table WHERE age > %s"
cursor.execute(query_sql, (18,))
# 获取所有结果
result = cursor.fetchall()
for row in result:
print(f"id: {row[0]}, name: {row[1]}")
cursor.close()
conn.close()
插入、更新、删除操作
这类修改数据的操作需要提交事务才能生效:
import psycopg2
db_config = {
"host": "127.0.0.1",
"port": 5432,
"database": "test_db",
"user": "postgres",
"password": "123456"
}
conn = psycopg2.connect(**db_config)
cursor = conn.cursor()
# 插入数据示例
insert_sql = "INSERT INTO user_table (name, age) VALUES (%s, %s)"
cursor.execute(insert_sql, ("张三", 20))
# 提交事务
conn.commit()
print("数据插入成功")
cursor.close()
conn.close()
常见连接问题排查
- 如果提示
connection refused,检查PostgreSQL服务是否启动,host和port配置是否正确 - 如果提示
password authentication failed,检查user和password是否和数据库配置一致 - 如果提示
database does not exist,检查database参数对应的数据库是否已经创建 - 如果执行修改操作后数据没有变化,检查是否调用了
conn.commit()提交事务
注意:生产环境中不要将数据库密码等敏感信息直接写在代码里,建议通过环境变量或者配置文件的方式加载,避免敏感信息泄露。
PythonPostgreSQLpsycopg2数据库连接修改时间:2026-07-21 14:36:24