在数据分析、自动化办公、后台开发等场景中,我们经常需要从数据库中提取数据,而 PostgreSQL 是被广泛使用的开源数据库之一。那么,Python 如何高效连接 PostgreSQL并进行数据交互?下面本文带你一步一步操作。
以Navicat Premium客户端为例,我们先看看使用Navicat Premium连接数据库都需要哪些信息凭证,点击新建连接,选择PostgreSQL数据库,点击下一步。

在Navicat Premium连接信息需要以下内容,包含主机地址、端口号、数据库名、用户名和密码,这些信息在使用Python连接时同样需要。
主机地址(host): IP地址
端口号(port): PostgreSQL 默认是 5432
数据库名(database): 如 my_database
用户名(user): 如 admin
密码(password): 如 your_password

接下来尝试使用Python来连接数据库,首先查看一下自己的Python版本,如果Python版本较低的话,建议升级一下Python版本。
import sysprint(sys.version)

接着下载SQLAlchemy库,SQLAlchemy 是一个功能强大的 Python 数据库工具,它提供了统一的数据库操作接口,既支持原生SQL,又支持对象关系映射,让数据库操作更灵活、高效、可维护。
!pip install SQLAlchemy -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

下载PostgreSQL 驱动。
!pip install psycopg2-binary -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

下载好SQLAlchemy以及PostgreSQL 驱动后,就可以使用 SQLAlchemy 创建连接,输入下面的Python代码就可以完成数据库连接。
from sqlalchemy import create_engineimport pandas as pdfrom urllib.parse import quote_plus# 用于对特殊字符的密码进行编码# 配置信息host = '127.0.0.1'port = '5432'database = 'my_database'username = 'admin'password = 'your_password'# 如果有特殊字符需要使用 quote_plus 编码# 构建连接字符串encoded_password = quote_plus(password)conn_str = f"postgresql+psycopg2://{username}:{encoded_password}@{host}:{port}/{database}"# 创建引擎engine = create_engine(conn_str)# 测试读取一张表df = pd.read_sql_query("SELECT * FROM your_table LIMIT 10;", engine)print(df.head())
如果你想在读取数据之前对于数据先做一次过滤,可以用pandas.read_sql_query()直接读取SQL查询结果为DataFrame,比如,这里可以写SQL语句进行数据过滤,下面的SQL语句可以查询近七日创建的数据,相当于在给DataFrame赋值前就做了过滤。
sql ="""SELECT order_id, amount, created_atFROM ordersWHERE created_at >= current_date - INTERVAL '7 days'"""df = pd.read_sql_query(sql, engine)print(df)
上面的SQL查询语法与在数据库中的SQL语法是等同的。

如果你长期使用 SQLAlchemy 的 engine,不需要手动关闭连接。但如果你使用的是 psycopg2 原始驱动,记得要关闭,这样可以释放部分资源,减少服务器压力。
engine.dispose() # 可用于主动释放连接
上面通过Python将数据库中的数据导入为一个DataFrame,接下来就可以使用Pandas进行数据清洗和数据分析步骤,而且还可以使用一些Python包做数据可视化,对比SQL直接进行数据清洗,Python还可以进行数据呈现。
比如,下面的房价预测数据就是基于数据库中的数据,使用Python进行数据清洗,并结合机器学习模型做房价预测及数据可视化,从数据清洗阶段,到数据建模,到数据可视化,Python一个工具就能搞定。

以上,借助一个小案例,通过SQLAlchemy和Pandas,Python连接PostgreSQL可以非常灵活与高效,适用于数据分析、报表生成、自动化工具等场景,只需几步就能完成数据读取,轻松将数据库中的业务数据转为你熟悉的Excel表格。
关注和星标『大话数据分析』
和作者一起学习数据分析!
👆点击关注|设为星标|干货速递👆
前蚂蚁金服数据运营,现京东经营分析,公众号、知乎、头条「大话数据分析」主理人,专注于数据分析的实践与分享,掌握Python、SQL、PowerBI、Excel等数据分析工具,擅长运用技术解决企业实际问题。

