Python作为热门的编程语言,在数据处理、后端开发等场景中经常需要和PostgreSQL数据库交互,psycopg2是目前最成熟稳定的PostgreSQL适配库,能够高效实现两者的连接与数据操作。

环境准备与库安装
首先确保本地已经安装PostgreSQL数据库,并且记住数据库的服务地址、端口、数据库名、用户名和密码。如果还没有安装psycopg2库,可以通过pip命令快速安装:
# 安装psycopg2的二进制版本,避免编译依赖问题 pip install psycopg2-binary
如果安装过程中没有报错,说明库已经成功安装到当前Python环境中。
基础连接代码示例
使用psycopg2连接PostgreSQL的核心是通过connect方法传入连接参数,建立连接后获取游标就可以执行SQL语句。下面是最小化的连接示例:
import psycopg2
# 数据库连接参数
db_params = {
"host": "127.0.0.1", # 数据库地址,本地为127.0.0.1
"port": "5432", # PostgreSQL默认端口
"database": "test_db", # 要连接的数据库名
"user": "postgres", # 数据库用户名
"password": "123456" # 对应用户的密码
}
try:
# 建立数据库连接
conn = psycopg2.connect(**db_params)
# 创建游标对象
cursor = conn.cursor()
# 执行测试SQL,查询PostgreSQL版本
cursor.execute("SELECT version();")
# 获取查询结果
version = cursor.fetchone()
print("数据库连接成功,PostgreSQL版本:", version)
except Exception as e:
print("数据库连接失败,错误信息:", e)
finally:
# 关闭游标和连接,释放资源
if 'cursor' in locals():
cursor.close()
if 'conn' in locals():
conn.close()
连接参数说明
connect方法支持多种参数传入方式,除了上面的字典解包方式,也可以直接传入字符串,下面是两种常用参数配置方式的对比:
| 参数类型 | 配置方式 | 适用场景 |
|---|---|---|
| 关键字参数 | host=xxx, port=xxx 逐个传入 | 参数较少,配置简单的情况 |
| 连接字符串 | "host=127.0.0.1 port=5432 dbname=test_db user=postgres password=123456" | 参数较多,需要统一管理的场景 |
常见连接问题与解决
- 连接超时:检查host和port是否正确,确认PostgreSQL服务是否启动,防火墙是否开放对应端口
- 认证失败:检查user和password是否正确,确认该用户有对应数据库的连接权限
- 数据库不存在:检查database参数对应的数据库是否已经创建,没有的话先通过PostgreSQL客户端创建
基础数据操作示例
连接成功后,可以通过游标执行增删改查操作,下面是创建表、插入数据、查询数据的完整示例:
import psycopg2
db_params = {
"host": "127.0.0.1",
"port": "5432",
"database": "test_db",
"user": "postgres",
"password": "123456"
}
conn = psycopg2.connect(**db_params)
cursor = conn.cursor()
# 创建用户表
create_table_sql = """
CREATE TABLE IF NOT EXISTS user_info (
id SERIAL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT
)
"""
cursor.execute(create_table_sql)
# 插入数据
insert_sql = "INSERT INTO user_info (name, age) VALUES (%s, %s)"
cursor.execute(insert_sql, ("张三", 25))
# 提交事务,增删改操作需要提交才会生效
conn.commit()
# 查询数据
cursor.execute("SELECT * FROM user_info")
result = cursor.fetchall()
print("查询结果:", result)
cursor.close()
conn.close()
需要注意,执行INSERT、UPDATE、DELETE等修改数据的操作时,必须调用commit方法提交事务,否则修改不会保存到数据库中。如果需要回滚操作,可以调用rollback方法。
PythonPostgreSQLpsycopg2数据库连接修改时间:2026-07-21 11:15:30