PostgreSQL与Python交互教程:从连接到数据处理,附电商场景实战案例

admin python教程 16


做数据分析或开发的朋友,是不是总在数据库和 Python 之间来回折腾?想把 PostgreSQL 里的数据用 Python 处理,却卡在连接环节,代码写了半天连不上库;好不容易连上了,增删改查又频频报错,数据处理效率低得让人着急?别愁,今天兔子哥就带大家搞定 PostgreSQL 与 Python 的交互,从基础连接讲到数据处理,还附上个电商场景的实战案例,哪怕你是刚上手的新手,跟着学也能轻松上手,一起往下看吧!

一、先搞懂:为啥要让 PostgreSQL 和 Python “合作”?


可能有朋友会问,数据库能存数据,Python 能处理数据,各用各的不行吗?还真不行!实际工作中,咱们常需要用 Python 从数据库取数据做分析、画图表,或者用 Python 把爬来的数据存进数据库,两者配合才能效率翻倍。你看这些常见场景:
  • 电商用 Python 从 PostgreSQL 取订单数据,做销量分析和可视化报表;
  • 爬虫把爬来的商品信息,通过 Python 批量存进 PostgreSQL 数据库;
  • 数据分析用 Python 处理数据库里的用户行为数据,挖消费规律。

有个做电商运营的朋友说:“之前手动从数据库导数据到 Excel,再用 Python 处理,光导数据就花半小时。学会用 Python 直接连数据库后,一行代码取数,效率提了不止一倍!” 所以啊,学会两者交互,能省不少冤枉时间。

二、基础准备:Python 连 PostgreSQL,这两步先做好


想让 Python 和 PostgreSQL “对话”,得先搭好桥梁,这两步千万别少:

1. 装个 “连接器”:psycopg2 库安排上


Python 不能直接连 PostgreSQL,得用专门的库,最常用的就是 psycopg2,安装超简单,打开命令行敲:
bash
pip install psycopg2-binary

为啥用psycopg2-binary?因为它是简化版,不用装额外依赖,新手不容易出错。等安装完成,Python 里就能导入这个库了,这就像给两者安了个 “对讲机”。

2. 准备好连接信息:数据库 “地址” 别填错


连数据库前,得知道 “往哪连”,这几个信息必须记牢:
  • 数据库地址(host):本地的话一般是localhost,远程的就是服务器 IP;
  • 端口(port):PostgreSQL 默认是5432,没改过的话不用动;
  • 数据库名(dbname):你要连的数据库名字,比如ecommerce
  • 用户名(user):登录数据库的用户名,默认常是postgres
  • 密码(password):登录密码,安装时设的那个别忘啦。

把这些信息记在小本本上,等下写代码要用,少一个都连不上哦。

三、核心操作:Python 连 PostgreSQL 全流程,一步一步来


1. 写段连接代码:让两者 “握手成功”


准备工作做好,就能写连接代码了,模板给你备好,改改信息就能用:
python
import psycopg2# 填自己的数据库信息conn = psycopg2.connect(host="localhost",port="5432",dbname="ecommerce",user="postgres",password="你的密码")# 创建游标,用来执行SQLcur = conn.cursor()# 测试下是否连上print("连接成功!")# 用完记得关游标和连接,不然占资源cur.close()conn.close()

运行这段代码,没报错还打印 “连接成功”,就说明两者 “握手” 成功啦。有新手第一次连时报错,多半是密码填错或数据库名不对,仔细核对下信息就行。

2. 查数据:用 Python 从数据库 “取” 东西


连上后第一件事就是查数据,比如从电商订单表查最近 10 条订单:
python
# 接上面的连接代码cur = conn.cursor()# 写SQL查询语句sql = "SELECT order_id, user_id, total_amount FROM orders LIMIT 10;"cur.execute(sql)  # 执行SQL# 取查询结果results = cur.fetchall()  # 取所有结果for row in results:print(f"订单号:{row[0]}, 用户ID:{row[1]}, 金额:{row[2]}")# 关连接cur.close()conn.close()

fetchall()是取所有结果,想取一条用fetchone(),取前 N 条用fetchmany(N),按需选用就行。运行后就能在 Python 里看到数据库的数据,是不是很神奇?

3. 存数据:用 Python 往数据库 “存” 东西


爬了数据想存进数据库?用INSERT语句就行,比如存一条新订单:
python
# 接连接代码cur = conn.cursor()# 写插入SQL,用%s当占位符,安全不容易出错sql = """INSERT INTO orders (order_id, user_id, total_amount, order_time)VALUES (%s, %s, %s, %s);"""# 要插入的数据data = ("2024001", "user100", 299.9, "2024-05-20 14:30:00")cur.execute(sql, data)  # 执行插入conn.commit()  # 提交事务,不然数据存不进去!print("数据插入成功!")cur.close()conn.close()

这里要注意,插入、更新、删除后必须用conn.commit()提交,不然数据白存了,这是新手最容易忘的一步,记牢咯!

4. 更安全的写法:用 with 语句自动关连接


手动关连接容易忘,用 with 语句更省心,自动处理连接关闭:
python
with psycopg2.connect(host="localhost",dbname="ecommerce",user="postgres",password="你的密码") as conn:with conn.cursor() as cur:cur.execute("SELECT * FROM products LIMIT 5;")print(cur.fetchall())# 不用手动close,with结束会自动关,超方便

四、电商场景实战:用 Python 处理订单数据,超实用


光说不练假把式,咱们用电商场景实战下,看看怎么用 Python 和 PostgreSQL 配合干活:

场景:分析近 30 天订单数据,算销量 Top3 商品


步骤很简单,跟着做就行:
  1. 准备工作:假设 PostgreSQL 里有个orders表(订单)和order_items表(订单项),存了订单 ID、商品 ID、数量、金额等数据。
  2. 用 Python 连数据库取数据

python
import psycopg2import pandas as pd  # 用pandas处理数据更方便# 连接数据库with psycopg2.connect(host="localhost",dbname="ecommerce",user="postgres",password="你的密码") as conn:# 查近30天订单项数据sql = """SELECT product_id, SUM(quantity) as total_qtyFROM order_itemsWHERE order_time >= CURRENT_DATE - INTERVAL '30 days'GROUP BY product_idORDER BY total_qty DESCLIMIT 3;"""# 用pandas直接读成DataFramedf = pd.read_sql(sql, conn)# 打印结果print("近30天销量Top3商品:")print(df)

  1. 结果可视化:用 matplotlib 画个柱状图,更直观:

python
import matplotlib.pyplot as pltplt.bar(df['product_id'], df['total_qty'])plt.xlabel('商品ID')plt.ylabel('销量')plt.title('近30天销量Top3商品')plt.show()

这样一套操作下来,从数据库取数到分析可视化全搞定,比手动处理快多了。有朋友用这方法做周报,之前花半天,现在半小时就搞定,还不容易出错。

五、常见问题自问自答,帮你避坑


问题 1:连数据库时报 “password authentication failed”?


答:十有八九是密码错了,或者用户名不对。先确认密码是不是安装时设的那个,用户名默认是postgres,如果改过就用改过的名字。

问题 2:插入数据后数据库里看不到?


答:肯定是没写conn.commit()!PostgreSQL 默认需要手动提交事务,插入、更新、删除后必须加这句,查询不用哦。

问题 3:处理大量数据时 Python 卡得不行?


答:别用fetchall()一次性取太多数据,用fetchmany(1000)分批取,处理完一批再取下一批,内存就不会爆了。

兔子哥的小建议


PostgreSQL 和 Python 交互不难,关键是多练基础操作:连接、查询、插入这三板斧练熟了,大部分场景都能应付。新手刚开始可以从查数据入手,慢慢尝试插入、更新,一步一步来。
记得写代码时加异常处理,比如连接失败、SQL 错误时能提示,这样出问题了好排查,比如:
python
try:# 连接数据库代码except Exception as e:print(f"出错啦:{e}")

平时多结合实际场景练,比如爬点数据存数据库,或者从数据库取数做分析,练多了自然就熟了。两者配合好了,数据处理效率能提一大截,工作也能轻松不少,希望这篇教程能帮到你,加油哦!

标签: PostgreSQL

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~