在后端开发、数据分析、爬虫、AI 向量检索、物联网项目中,Python + PostgreSQL 几乎是目前综合体验最强的技术搭档。
Python 语法简洁、生态万能;PostgreSQL 功能全面、稳定可靠、支持事务、JSON、空间数据、AI 向量检索。两者结合既能写小脚本快速落地,也能支撑企业级高并发业务。
今天这篇博文不讲空话,带你搞懂:为什么选 PG、用什么库连接、完整增删改查、事务处理、常见坑与生产最佳实践。
一、为什么是 Python + PostgreSQL?
很多同学写 Python 项目习惯用 SQLite 或 MySQL,但在稍微复杂一点的业务里,PG 的优势会被无限放大。
1. 相比 SQLite
SQLite 适合本地测试、单机脚本,但不支持高并发、不支持网络连接、事务能力弱,完全不适合线上服务。而 PostgreSQL 是标准服务端数据库,支持多连接、高并发、热备份、权限管理。
2. 相比 MySQL
Python 项目常见场景:爬虫不规则数据、结构化业务数据、AI 向量、日志分析、复杂统计多表联查。
PG 原生支持 JSONB、数组、全文检索、GIS、向量索引,不用为了不同数据类型混搭多套数据库,非常贴合 Python “万物皆可适配” 的开发风格。
3. 生态完美适配
Django、FastAPI、Flask、SQLAlchemy、Pandas、LangChain 全线深度支持 PostgreSQL。尤其是 AI 应用、数据中台、后台管理系统,Python+PG 已经是行业默认标配。
二、Python 连接 PostgreSQL 主流库怎么选?
目前 Python 操作 PG 主要三种方案,新手直接按场景抄作业即可。
1. psycopg2(底层原生,性能最强)
PostgreSQL 官方推荐的 Python 驱动,C 语言实现、性能极高、功能最全、支持完整事务、游标、批量写入。适合脚本开发、高性能数据导入、后端底层封装。
2. SQLAlchemy(企业首选,ORM 开发)
Python 最流行的数据库 ORM 框架,屏蔽底层 SQL 差异,支持模型定义、链式查询、自动迁移、多数据库切换。FastAPI/Django 项目基本全部基于 ORM 开发。
3. psycopg3(psycopg,新版推荐)
psycopg2 升级版,异步更好、API 更现代化,新项目优先使用。
三、零基础实战:psycopg2 原生操作 PG
先从最底层、最直观的原生连接开始,理解数据库连接、游标、事务、提交、回滚。
1. 安装依赖
pip install psycopg2-binary
2. 完整连接 + 建表 + 增删改查
import psycopg2
from psycopg2 import Error
# 数据库连接信息
DB_CONFIG = {
"host": "127.0.0.1",
"port": 5432,
"dbname": "test_db",
"user": "postgres",
"password": "你的密码"
}
try:
# 建立连接
conn = psycopg2.connect(**DB_CONFIG)
# 创建游标
cur = conn.cursor()
# 1.建表
cur.execute("""
CREATE TABLE IF NOT EXISTS user_info (
id SERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL,
age INT,
info JSONB,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
""")
# 2.插入数据(支持JSON,PG特色)
cur.execute(
"INSERT INTO user_info (username, age, info) VALUES (%s, %s, %s)",
("张三", 25, {"tag": "python开发", "level": "高级"})
)
# 3.查询数据
cur.execute("SELECT * FROM user_info")
rows = cur.fetchall()
for row in rows:
print(row)
# 提交事务(PG必须手动提交)
conn.commit()
except Error as e:
print("数据库错误:", e)
# 出错回滚
conn.rollback()
finally:
if conn:
cur.close()
conn.close()
关键点说明(新手必看)
- PostgreSQL 默认开启事务:所有增删改操作必须
commit()才会落地 - 出错必须
rollback(),否则连接会卡住 - 支持原生 JSONB 字段,无需序列化字符串,Python 字典可直接存入
四、ORM 实战:SQLAlchemy 优雅开发
企业项目不会裸写 SQL,基本全部使用 ORM,代码更整洁、可维护、防注入、易迁移。
1. 安装依赖
pip install sqlalchemy psycopg2-binary
2. 极简 ORM 示例
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_base, sessionmaker
# 连接URL
DATABASE_URL = "postgresql://postgres:你的密码@127.0.0.1:5432/test_db"
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
# 定义模型
class User(Base):
__tablename__ = "user"
id = Column(Integer, primary_key=True, index=True)
name = Column(String(50))
age = Column(Integer)
# 创建表
Base.metadata.create_all(bind=engine)
# 增删改查
db = SessionLocal()
# 新增
new_user = User(name="李四", age=28)
db.add(new_user)
db.commit()
# 查询
user = db.query(User).first()
print(user.name, user.age)
db.close()
FastAPI、Flask 项目都是基于这套范式扩展,学习成本极低。
五、Python+PG 特色能力:发挥 PG 独有优势
如果只用 PG 存普通字符串和数字,完全浪费了它的能力。Python 搭配 PG 最强的场景在这里:
1. 结构化 + 非结构化统一存储
爬虫、用户行为、设备日志、前端埋点数据参差不齐,MySQL 存储 JSON 性能差、索引弱。PG 的 JSONB 支持索引、筛选、排序、聚合,Python 字典直接存取,非常适合不规则业务数据。
2. AI 向量检索(当下热门)
借助 pgvector 扩展,PG 可以直接作为向量数据库使用,Python 结合大模型、Embedding 快速实现知识库、智能问答、相似度检索,无需额外部署专业向量库。
3. 复杂数据分析
多表联查、分组聚合、窗口函数、分区表,PG 的 SQL 语法标准且强大,搭配 Pandas 可以轻松完成数据清洗、统计分析、报表生成。
六、开发常见坑 & 生产最佳实践
1. 新手高频坑点
- 忘记 commit:PG 默认事务模式,不提交数据不生效
- 不做异常回滚:报错后事务挂起,后续操作阻塞
- 字符串拼接 SQL:导致 SQL 注入,必须用 %s 占位符
- 不关闭连接游标:长时间运行脚本会连接泄露
2. 生产环境建议
- 线上项目优先使用 ORM + 连接池,避免频繁创建销毁连接
- 大批量数据导入使用
copy_from,速度远超逐条 insert - 核心业务必须开启事务、异常回滚、日志记录
- JSON 字段高频查询务必建立 JSONB 索引
- 定时任务、数据分析场景优先 PG,轻量化C端读写场景可灵活选择 MySQL
七、总结
Python + PostgreSQL 不是小众搭配,而是现代开发的全能型组合:
✅ 写脚本、爬虫、数据分析,灵活高效
✅ 写后端服务、企业系统,稳定可靠
✅ 做 AI 向量检索、空间数据、复杂业务,独有优势
✅ 开源免费、无版权风险、生态完善
如果你还停留在 “Python 只能搭配 MySQL/SQLite” 的阶段,非常建议尽快上手 PostgreSQL,它能解决你开发中 90% 的数据存储与查询痛点。
💡 后续会更新:PG 连接池优化、大批量数据导入、pgvector AI 向量实战、FastAPI+PG 完整项目架构,点赞收藏不迷路!