本文目录导读:

对于 Python 连接 PostgreSQL,最主流和推荐的驱动是 psycopg2,以下是详细说明和替代方案:
主要驱动选项
psycopg2(最推荐)
pip install psycopg2-binary
特点:
- 最成熟、最稳定的 PostgreSQL 适配器
- 完全支持 Python DB-API 2.0
- 线程安全
- 支持异步操作(通过
psycopg2.extras)
示例:
import psycopg2
conn = psycopg2.connect(
host="localhost",
database="mydb",
user="user",
password="password"
)
cur = conn.cursor()
cur.execute("SELECT * FROM table")
rows = cur.fetchall()
注意:
psycopg2-binary是预编译版本,避免编译问题,生产环境建议用psycopg2(需编译)以获得更好的性能。
psycopg3(最新版)
pip install psycopg
特点:
- psycopg2 的下一代版本
- 更好的性能
- 原生异步支持
- 更简洁的 API
asyncpg(异步首选)
pip install asyncpg
特点:
- 专为 asyncio 设计
- 性能极佳(比 psycopg2 快 2-3 倍)
- 适合高并发场景
示例:
import asyncpg
import asyncio
async def main():
conn = await asyncpg.connect(
user='user',
password='password',
database='mydb',
host='localhost'
)
values = await conn.fetch("SELECT * FROM table")
await conn.close()
asyncio.run(main())
选择建议
| 场景 | 推荐驱动 |
|---|---|
| 一般应用 | psycopg2(最稳定) |
| 新项目 | psycopg3 |
| 异步/协程 | asyncpg |
| ORM 框架 | SQLAlchemy、Django ORM(底层可用 psycopg2) |
使用 ORM 时的驱动配置
SQLAlchemy
# pip install sqlalchemy psycopg2-binary
from sqlalchemy import create_engine
engine = create_engine('postgresql://user:password@localhost/mydb')
Django
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydb',
'USER': 'user',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '5432',
}
}
常见问题解决
连接池使用(psycopg2):
from psycopg2 import pool
connection_pool = pool.SimpleConnectionPool(
1, 20, # 最小/最大连接数
user="user",
password="password",
host="localhost",
database="mydb"
)
conn = connection_pool.getconn()
# 使用连接...
connection_pool.putconn(conn)
如果是新项目,推荐 psycopg3 或 asyncpg;如果需要稳定性和广泛支持,选择 psycopg2。