Python使用psycopg2操作PostgreSQL数据库实现增删改查

江屿
江屿
发布时间:2026-10-11 | 2人浏览过
原创

本文详细讲解如何使用Python中的psycopg2库安全连接PostgreSQL数据库,并通过参数化查询完成建表、数据插入、记录更新、表数据清理与删除以及结果集读取等核心操作。内容包含完整的代码片段、关键参数说明与常见陷阱规避指南,助您快速搭建Python与PostgreSQL的数据交互流程。

一、环境准备与连接配置

在Python中操作PostgreSQL,推荐依赖官方维护的psycopg2扩展库。建立连接时,需依次传入主机地址、通信端口、目标库名、访问账号及对应密码。确认数据库服务已启动且网络可达后,即可通过connect()获取会话实例。

import psycopg2

conn = psycopg2.connect(
    host='localhost',
    port='5432',
    dbname='your_db_name',
    user='your_username',
    password='your_password'
)
print("数据库连接成功")

二、创建数据表与插入记录

第1步:初始化表结构

连接成功后,获取游标对象以发送SQL指令。建议使用三引号包裹多行DDL语句,执行完毕后必须调用commit()使变更生效。

cursor = conn.cursor()
create_sql = """
    CREATE TABLE IF NOT EXISTS public.sample_data (
        id SERIAL PRIMARY KEY,
        name VARCHAR(50) NOT NULL
    );
"""
cursor.execute(create_sql)
print("表结构创建成功")
conn.commit()
cursor.close()
conn.close()

第2步:安全插入数据

向表中追加记录时,请严格避免字符串拼接。改用%s占位符配合元组传递参数,可从根本上阻断SQL注入漏洞,同时优化执行性能。

conn = psycopg2.connect(host='localhost', port='5432', dbname='your_db_name', user='your_username', password='your_password')
cursor = conn.cursor()
insert_sql = "INSERT INTO public.sample_data (name) VALUES (%s)"
data_values = ('张三', '李四')
cursor.executemany(insert_sql, data_values)  
print(f"成功插入 {cursor.rowcount} 条记录")
conn.commit()
cursor.close()
conn.close()
终端打印插入操作成功返回的信息截图
插入语句执行后终端输出的状态反馈
数据库客户端可视化管理工具中显示的新增数据列表
客户端查询界面中验证到的最新写入记录

三、更新与清理表数据

第3步:按条件更新字段

定位到特定主键或业务字段进行修改时,同样采用参数化UPDATE语句,确保变更精准作用于目标行。

conn = psycopg2.connect(host='localhost', port='5432', dbname='your_db_name', user='your_username', password='your_password')
cursor = conn.cursor()
cursor.execute("UPDATE public.sample_data SET name = %s WHERE id = %s", ('何老六', 1))
conn.commit()
print("数据更新完成")
cursor.close()
conn.close()

第4步:删除数据或销毁表

若仅需清空表内所有行但保留结构,应使用TRUNCATE TABLE。若需彻底移除表定义,则执行DROP TABLE。此类操作不可逆,执行前请务必对重要数据完成备份与风险评估。

conn = psycopg2.connect(host='localhost', port='5432', dbname='your_db_name', user='your_username', password='your_password')
cursor = conn.cursor()
cursor.execute("TRUNCATE TABLE public.sample_data")  
# cursor.execute("DROP TABLE IF EXISTS public.sample_data")  
conn.commit()
cursor.close()
conn.close()

四、查询结果集与可视化呈现

第5步:读取数据并转换为DataFrame

对于报表分析与探索性研究,可直接借助Pandas库将PostgreSQL查询结果映射为内存表格。read_sql()方法支持直连数据库会话,免去额外配置引擎的步骤。

import pandas as pd

conn = psycopg2.connect(host='localhost', port='5432', dbname='your_db_name', user='your_username', password='your_password')
query = "SELECT * FROM public.sample_data LIMIT 100;"
df = pd.read_sql(query, con=conn)
print(df.head())

以上步骤覆盖了Python操作PostgreSQL的核心CRUD流程。无论是日志采集、ETL处理还是业务接口后端,规范化的连接管理与防注入编写都是保障系统稳定运行的基石。以上就是Python操作PostgreSQL数据库实现增删改查的详细内容,更多关于Python数据库编程的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表