当前位置: 首页 > news >正文

【Python系列】Python 连接 PostgreSQL 数据库并查询数据

???欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。??? 欢迎订阅本专栏

博客目录
    • 1. PostgreSQL 简介
    • 2. psycopg2 库
    • 3. 安装 psycopg2
    • 4. 连接 PostgreSQL 数据库
    • 5. 执行查询
    • 6. 处理查询结果
    • 7. 插入、更新和删除数据
    • 8. 提交事务和关闭连接
    • 9. 错误处理

在现代软件开发中,数据库是存储和检索数据的核心组件。PostgreSQL(简称 PG)是一个功能强大的开源对象关系数据库系统,它以其稳定性、强大的功能和灵活性而闻名。Python 作为一种流行的编程语言,与 PostgreSQL 的结合使用非常广泛。
在这里插入图片描述

1. PostgreSQL 简介

PostgreSQL 是一个高度可扩展的开源数据库管理系统,它支持 SQL(结构化查询语言)并提供许多现代数据库特性,如部分 ACID(原子性、一致性、隔离性、持久性)事务、触发器、视图、事务完整性、多版本并发控制等。PostgreSQL 的可扩展性允许用户自定义数据类型、函数、操作符等。

2. psycopg2 库

psycopg2是 Python 中用于连接 PostgreSQL 数据库的适配器。它提供了一个非常接近 Python 数据库 API 规范(PEP 249)的接口,使得 Python 开发者可以方便地使用 Python 代码来操作 PostgreSQL 数据库。psycopg2支持原生的 Unicode 数据类型,并且可以处理二进制数据。

3. 安装 psycopg2

在开始之前,确保你已经安装了psycopg2库。如果还没有安装,可以通过以下命令安装:

pip install psycopg2-binary

或者,如果你使用的是 Python 3,并且系统中同时安装了 Python 2,可能需要使用pip3

pip3 install psycopg2-binary

psycopg2-binarypsycopg2的预编译版本,它包含了二进制文件,这样可以避免编译源代码的麻烦。

4. 连接 PostgreSQL 数据库

连接 PostgreSQL 数据库需要知道数据库的地址、端口、数据库名、用户名和密码。以下是一个简单的示例,展示如何使用psycopg2连接到 PostgreSQL 数据库:

import psycopg2# 连接数据库的参数
dbname = "your_dbname"
user = "your_username"
password = "your_password"
host = "your_host"
port = "your_port"# 连接字符串
conn_string = f"host={host} port={port} dbname={dbname} user={user} password={password}"# 建立连接
conn = psycopg2.connect(conn_string)# 创建cursor对象
cursor = conn.cursor()

在这段代码中,你需要将your_dbnameyour_usernameyour_passwordyour_hostyour_port替换为实际的数据库连接信息。

5. 执行查询

一旦建立了数据库连接,就可以使用cursor对象来执行 SQL 查询了。以下是一个查询示例:

# 要执行的SQL查询
query = "SELECT * FROM your_table_name;"# 执行查询
cursor.execute(query)# 获取查询结果
results = cursor.fetchall()# 打印结果
for row in results:print(row)

在这个例子中,你需要将your_table_name替换为你想要查询的表名。fetchall()方法会返回查询结果的所有行,每行是一个元组。

6. 处理查询结果

查询结果通常以元组的形式返回,每个元组代表一行数据。你可以通过索引或列名来访问元组中的值。例如:

for row in results:print(f"ID: {row[0]}, Name: {row[1]}")

如果你更喜欢使用列名而不是索引,可以在执行查询后使用cursor.description来获取列名,然后使用列名访问数据:

# 获取列名
columns = [desc[0] for desc in cursor.description]# 使用列名访问数据
for row in results:print(f"ID: {row[columns.index('id')]}, Name: {row[columns.index('name')]}")

7. 插入、更新和删除数据

除了查询数据,psycopg2还支持插入、更新和删除操作。以下是一些基本的示例:

# 插入数据
insert_query = "INSERT INTO your_table_name (column1, column2) VALUES (%s, %s);"
cursor.execute(insert_query, (value1, value2))# 更新数据
update_query = "UPDATE your_table_name SET column1 = %s WHERE column2 = %s;"
cursor.execute(update_query, (new_value1, condition_value2))# 删除数据
delete_query = "DELETE FROM your_table_name WHERE column1 = %s;"
cursor.execute(delete_query, (condition_value1,))

在这些操作中,%s是一个占位符,用于传递参数化的查询值,这有助于防止 SQL 注入攻击。

8. 提交事务和关闭连接

在执行插入、更新或删除操作后,需要提交事务以确保更改被保存到数据库中:

# 提交事务
conn.commit()

完成所有数据库操作后,应该关闭cursor对象和数据库连接:

# 关闭cursor
cursor.close()# 关闭连接
conn.close()

9. 错误处理

在操作数据库时,可能会遇到各种错误,如连接失败、执行查询错误等。使用try...except块可以捕获和处理这些异常:

try:conn = psycopg2.connect(conn_string)cursor = conn.cursor()# 执行数据库操作...
except psycopg2.Error as e:print(f"Database error: {e}")
finally:if conn is not None:conn.close()

觉得有用的话点个赞 ???? 呗。
本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!???

???如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!?? ?? ??

???Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!???

img

相关文章:

【Python系列】Python 连接 PostgreSQL 数据库并查询数据

???欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…...

辛格迪客户案例 | 甫康(上海)健康科技有限责任公司药物警戒管理系统(PVS)项目

01 案例企业 甫康(上海)健康科技有限责任公司(简称“甫康”)该公司成立于2015年11月3日。公司的核心团队由来自中国和国外顶级制药公司的专业人士组成,与中国科学院上海药物研究所等知名研究机构保持紧密合作。此外,甫康药业还与…...

重新审视 ChatGPT 和 Elasticsearch:第 2 部分 - UI 保持不变

作者:来自 Elastic Jeff Vestal 本博客在第 1 部分的基础上进行了扩展,介绍了基于 RAG 的搜索系统的功能齐全的 Web UI。最后,你将拥有一个将检索、搜索和生成过程结合在一起的工作界面,同时使事情易于调整和探索。 不想读完整个内…...

坐标变换及视图变换和透视变换(相机透视模型)

文章目录 2D transformationScaleReflectionShear(切变)Rotation around originTranslationReverse变换顺序复杂变换的分解 齐次坐标(Homogenous Coordinates)3D transformationScale&TranslationRotation Viewing / Camera t…...

基于反激电路的电池充放电均衡控制

基于反激电路的电池充放电均衡控制是一种高效的能量转移型主动均衡方法,适用于锂离子电池组等串联电池组的管理。以下从原理、拓扑结构、控制策略和设计要点进行详细分析: 一、基本原理 反激电路(Flyback Converter)是一种隔离型…...

Windows版FFmpeg使用及B站视频下载示例python源码

Windows版FFmpeg使用及B站视频下载示例python源码 FFmpeg介绍和下载 FFmpeg 是一个功能强大、灵活且广泛使用的多媒体处理工具,无论是在专业领域还是日常使用中,都能满足各种多媒体处理需求。FFmpeg 是一个开源项目,遵循 LGPL 或 GPL 许可。…...

leetcode_动态规划/递归 509. 斐波那契数

509. 斐波那契数 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1F(n) F(n - 1) F(n - 2),其中 n …...

对泰坦尼克号沉没事件幸存者数据分析和预测

一、分析目的 探究决定泰坦尼克号沉没事件中什么因素决定着船上人的生死,并对实例进行判别和预测。 二、数据介绍 Titanic.csv数据中包含了891个样本,记录了泰坦尼克号遇难时的891个乘客的基本信息,其中包括以下信息: Passenger…...

算法之排序算法

排序算法 ♥常见排序算法知识体系详解♥ | Java 全栈知识体系 算法 - 排序 | CS-Notes 面试笔记 十大经典排序算法总结 | JavaGuide...

DMA发送全部历史记录数据到串口

背景 博主参与的项目中,有个读取全部历史记录的功能,如果下位机在主程序中将全部历史记录单纯地通过串口传输会比较占用cpu资源,影响主程序中别的功能。最后商量得出以下实现方案: 定义两个发送缓冲区DMATxbuf1和DMATxbuf2&…...

蓝桥杯好题推荐-----高精度减法

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 题目链接 记录详情 - 洛谷 | 计算机科学教育新生态https://www.luogu.com.cn/record/205122671 思路讲解 这个题目的解题思路,其实是和高精度加法是非常像的。怎么说…...

SpringMVC (3)

目录 1. 传递对象 2. 后端参数重命名(后端参数映射) 3. 传递数组 4. 传递集合 5. 传递JSON数据 5.1 JSON概念 5.2 JSON语法 5.3 JSON字符串和Java对象互转 5.4 JSON优点 5.5 传递JSON对象 6. 获取URL中参数PathVariable 7. 上传文件RequestP…...

vscode使用豆包MARSCode----集成doubao1.5 DeepSeekR1 DeepseekV3模型的ai编程插件

引入扩展 打开VSCode扩展窗口,在搜索窗口搜索MarsCode,找到MarsCode 插件单击「install」,完成安装,登录即可使用MarsCode 编程助手。 主要功能 主要快捷键 / explain 解释项目代码,AI 返回的内容有结构分类&#…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_buf_t

ngx_buf_t 定义在 src/core/ngx_buf.h typedef struct ngx_buf_s ngx_buf_t;struct ngx_buf_s {u_char *pos;u_char *last;off_t file_pos;off_t file_last;u_char *start; /* start of buffer */u_char …...

分布式开源协调服务之zookeeper

Zookeeper简介 Zookeeper是什么? Zookeeper官网中对Zookeeper的定义还是比较明确的: ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services…...

ubuntu系统安装playhouse三方库

ubuntu系统python3.10安装playhouse三方库 问题描述 问题描述 虚拟环境中使用pip install playhouse,返回安装成功 用pip list查看,能看到playhouse及版本号 导包时提示没有找到playhouse我那件目录,能发现 检查site-package发现问题&#x…...

【星云 Orbit-F4 开发板】04.一触即发:GPIO 外部中断

【星云 Orbit-F4 开发板】04. 一触即发:外部中断控制 摘要 本文详细介绍了如何使用STM32F407微控制器的HAL库实现外部中断功能。通过配置GPIO引脚作为外部中断源,并在中断回调函数中处理按键事件,实现了按键控制LED状态翻转的功能。本文旨在…...

笔记二:整数和浮点数在内存中存储

目录 一、数据类型介绍 二、类型的基本归类 1.整形家族: 2.浮点数家族: 3.构造类型: 4.指针类型 5.空类型: 三、整形在内存中的存储 3.1 原码,反码、补码 3.2 大小端介绍 四、浮点数在内存中的存储 ​编辑 4.…...

PyQT(PySide)的上下文菜单策略设置setContextMenuPolicy()

在 Qt 中,QWidget 类提供了几种不同的上下文菜单策略,这些策略通过 Qt::ContextMenuPolicy 枚举类型来定义,用于控制控件(如按钮、文本框等)在用户右键点击时如何显示上下文菜单。 以下是 Qt::ContextMenuPolicy 枚举中…...

BladeX框架接口请求跨域

前端使用代理请求接口,接口可以正常访问。如果换全路径请求就跨域。 除了后端要配置跨域 还需要修改配置文件对OPTIONS请求的限制...

WPF Chart控件从入门到精通:手把手教你打造动态数据看板

WPF Chart控件从入门到精通:手把手教你打造动态数据看板 在数据驱动的时代,能够直观呈现业务指标的动态数据看板已成为企业决策的标配工具。作为.NET开发者,掌握WPF Chart控件的深度应用,意味着你能够快速构建专业级的数据可视化解…...

vllm部署DeepSeek-R1-Distill-Qwen-1.5B:高并发推理性能评测教程

vllm部署DeepSeek-R1-Distill-Qwen-1.5B:高并发推理性能评测教程 1. 模型介绍与部署价值 DeepSeek-R1-Distill-Qwen-1.5B是DeepSeek团队基于Qwen2.5-Math-1.5B基础模型,通过知识蒸馏技术打造的轻量化版本。这个模型在保持强大能力的同时,专…...

Filter下固定块半导体设备PP精密加工案例 | 莱图加工程师实录

本次案例来自一家半导体微电子设备制造企业的委托加工需求,零件为Filter下固定块,作为莱图加承接的半导体设备零件加工项目之一,该零件在湿法工艺设备、晶圆清洗设备或化学液过滤系统中承担Filter组件的下部固定与支撑功能。Filter下固定块&a…...

仅限首批200名开发者获取:PHP低代码表单引擎v1.0内测版+商业授权白名单通道(含Figma组件库+Swagger自动文档生成)

第一章:PHP低代码表单引擎v1.0内测版概览与接入指南 PHP低代码表单引擎v1.0内测版是一款面向中小规模Web应用的轻量级表单构建与渲染框架,基于原生PHP 8.1开发,不依赖Composer自动加载,支持零配置快速嵌入现有项目。引擎核心由表单…...

【PyCon 2025闭门分享精要】:Python 3.14 JIT底层调度器深度调优——用3行代码撬动47% CPU利用率提升

第一章:Python 3.14 JIT编译器性能调优配置总览Python 3.14 引入了实验性内置 JIT(Just-In-Time)编译器,基于 Pyston 的优化后端重构,支持函数级动态编译与类型特化。该 JIT 默认处于禁用状态,需通过环境变…...

基于核密度估计的CNN-LSTM-Attention-KDE多输入单输出回归模型【MATLAB】

基于核密度估计的CNN-LSTM-Attention-KDE多输入单输出回归模型 在深度学习时间序列预测与回归分析中,传统的模型往往只能给出一个确定的“点预测”结果(例如:预测明天的温度是25度)。然而,在许多高风险的工程和金融场景…...

如何永久保存微信聊天记录?这个免费工具让你轻松备份和分析所有对话![特殊字符]

如何永久保存微信聊天记录?这个免费工具让你轻松备份和分析所有对话!🚀 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https:…...

OpenAlternative移动端优化完全指南:打造完美开源软件目录响应式体验

OpenAlternative移动端优化完全指南:打造完美开源软件目录响应式体验 【免费下载链接】openalternative Curated list of open source alternatives to proprietary software. 项目地址: https://gitcode.com/gh_mirrors/op/openalternative 在移动设备使用率…...

Windows Defender系统优化工具:提升系统性能的终极方案

Windows Defender系统优化工具:提升系统性能的终极方案 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mirrors/wi…...

专业数据恢复师工具箱揭秘:UFS Explorer Pro的5个高级功能实战解析

专业数据恢复师工具箱揭秘:UFS Explorer Pro的5个高级功能实战解析 当一块硬盘的文件系统彻底崩溃,分区表不知所踪,或是RAID阵列的配置信息丢失时,普通数据恢复软件往往束手无策。这正是UFS Explorer Professional Recovery展现其…...