【Python系列】使用 `psycopg2` 连接 PostgreSQL 数据库

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

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

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

博客目录

    • `psycopg2` 简介
    • 安装 `psycopg2`
    • 连接到 PostgreSQL 数据库
    • 执行 SQL 查询
    • 插入和更新数据
    • 错误处理

在现代软件开发中,数据库是存储和检索数据的核心组件。PostgreSQL 是一个广泛使用的开源对象关系数据库系统,以其强大的功能和灵活性而闻名。Python,作为一种流行的编程语言,提供了多种方式与数据库交互,其中 psycopg2 是连接 PostgreSQL 数据库的流行选择之一。
在这里插入图片描述

psycopg2 简介

psycopg2 是一个 PostgreSQL 数据库的适配器,它允许 Python 程序连接和操作 PostgreSQL 数据库。它提供了许多功能,包括查询执行、事务控制和数据类型转换。psycopg2 是用 C 语言编写的,因此它比纯 Python 库更快,更高效。

安装 psycopg2

在开始之前,确保你的环境中已经安装了 psycopg2。如果你还没有安装,可以通过 Python 的包管理器 pip 来安装。推荐安装 psycopg2-binary,因为它包含了 PostgreSQL 的 C 语言库,这样可以避免额外安装这些库的麻烦。

pip install psycopg2-binary

连接到 PostgreSQL 数据库

连接到 PostgreSQL 数据库需要数据库的配置信息,包括主机名、用户名、端口号、密码和数据库名。以下是一个简单的示例,展示如何使用 psycopg2 来连接到 PostgreSQL 数据库:

import psycopg2# 数据库配置信息
host = "your_host"
user = "your_user"
port = "your_port"  # PostgreSQL 默认端口是 5432
password = "your_password"
dbname = "your_dbname"# 连接数据库
try:conn = psycopg2.connect(host=host,user=user,port=port,password=password,dbname=dbname)print("连接成功")
except psycopg2.Error as e:print(f"连接失败: {e}")

在这段代码中,你需要将 your_hostyour_useryour_portyour_passwordyour_dbname 替换为你的 PostgreSQL 数据库的实际配置信息。

执行 SQL 查询

一旦连接到数据库,你就可以执行 SQL 查询了。psycopg2 提供了几种执行查询的方法,包括 cursor.execute()conn.execute()。以下是如何使用 cursor.execute() 来执行查询的示例:

# 创建 cursor 对象
cursor = conn.cursor()# 执行查询
try:cursor.execute("SELECT * FROM your_table")records = cursor.fetchall()for record in records:print(record)
except psycopg2.Error as e:print(f"查询失败: {e}")
finally:cursor.close()

在这个例子中,我们首先创建了一个 cursor 对象,然后使用 execute() 方法执行了一个 SQL 查询。查询结果通过 fetchall() 方法获取,并打印出来。

插入和更新数据

除了查询数据,psycopg2 也可以用来插入和更新数据库中的数据。以下是如何插入数据的示例:

# 插入数据
try:cursor.execute("INSERT INTO your_table (column1, column2) VALUES (%s, %s)", (value1, value2))conn.commit()  # 提交事务
except psycopg2.Error as e:print(f"插入失败: {e}")conn.rollback()  # 回滚事务
finally:cursor.close()

在这个例子中,我们使用 execute() 方法插入数据,并使用 commit() 方法提交事务。如果插入过程中发生错误,我们使用 rollback() 方法回滚事务,以保持数据库的一致性。

错误处理

在使用 psycopg2 时,错误处理是非常重要的。psycopg2 抛出的异常都是 psycopg2.Error 的实例,你可以通过捕获这些异常来处理错误。如前所述,我们在执行查询和插入数据时都使用了 try...except 块来捕获可能发生的错误。

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

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

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

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/62965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 权限管理:用户分类、权限解读与常见问题剖析

🌟 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。🌟 🚩用通俗易懂且不失专业性的文字,讲解计算机领域那些看似枯燥的知识点🚩 目录 💯L…

Oracle 11g ADG 单实例 DG Broker 配置指南

概述 DataGuard Broker能更加容易的管理和维护多个Standby Database,它能够将主库和备库按照一定的逻辑组织起来并进行集中管理,包括创建、维护和监控 Data Guard 等任务。如果有多个备库或者RAC数据库中有个多个实例,要是进行手工配置管理&…

数据采集卡的各参数介绍

数据采集卡(DAQ 卡)是用于测量物理信号(如电压、电流、温度等)并将其转化为数字信号的设备。 1. 通道数(Channels) 含义:数据采集卡可以同时采集多少路信号。比喻:通道数就像一个人…

LeetCode 力扣 热题 100道(十四)二叉树的中序遍历(C++)

给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 如下为代码: /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullpt…

运费微服务和redis存热点数据

目录 运费模板微服务 接收前端发送的模板实体类 插入数据时使用的entity类对象 BaseEntity类 查询运费模板服务 新增和修改运费模块 整体流程 代码实现 运费计算 整体流程 总的代码 查找运费模板方法 计算重量方法 Redis存入热点数据 1.从nacos导入共享redis配置…

【C++】—— set 与 multiset

【C】—— map 与 set 1 序列式容器和关联式容器2 set 系列的使用2.1 set 和 multiset 参考文档2.2 set 类的介绍2.3 set 的迭代器和构造2.4 set的增删查2.4.1 insert2.4.2 find 与 erase2.4.3 count 2.5 lower_bound 与 upper_bound2.6 multiset 与 set 的差异2.6.1 不再去重2…

HTML5系列(11)-- Web 无障碍开发指南

前端技术探索系列:HTML5 Web 无障碍开发指南 ♿ 致读者:构建人人可用的网络 👋 前端开发者们, 今天我们将深入探讨 Web 无障碍开发,学习如何创建一个真正包容、人人可用的网站。让我们一起为更多用户提供更好的网络…

dockers网络连接指令:docker network connect

docker network connect 是 Docker 提供的一个命令,用于将现有的容器连接到一个指定的网络中。通过这个命令,用户可以让容器加入到不同的网络环境中,从而实现容器间的通信或者与外部网络的交互。一旦容器被连接到某个网络,它就能够与其他同处该网络中的容器进行直接通信,而…

Jupyter Notebook认识、安装和启动以及使用

Jupyter Notebook认识、安装和启动以及使用 Jupyter Notebook认识、安装和启动以及使用 Jupyter Notebook认识、安装和启动以及使用一、认识Jupyter Notebook1.1 Jupyter Notebook概述1.2 Jupyter Notebook 重要特性(1)交互式代码执行(2)支持多种编程语言(3)富文本编辑(4)代码高…

算法第一弹-----双指针

目录 1.移动零 2.复写零 3.快乐数 4.盛水最多的容器 5.有效三角形的个数 6.查找总价值为目标值的两个商品 7.三数之和 8.四数之和 双指针通常是指在解决问题时,同时使用两个指针(变量,常用来指向数组、链表等数据结构中的元素位置&am…

Java 按照添加顺序的集合 详解

在 Java 中,若需要按照添加顺序存储和操作元素,有以下几种数据结构可供选择。这些结构在保留元素插入顺序的同时提供了不同的功能特性。 1. 使用 ArrayList 特点 有序性:ArrayList 会按添加顺序存储元素。允许重复:可以存储重复…

【后端面试总结】golang channel深入理解

在Go语言中,Channel是一种用于在goroutine之间进行通信和同步的重要机制。它提供了一种安全、类型安全的方式来传递数据,使得并发编程变得更加直观和简单。本文将详细介绍Golang中Channel的基本概念、创建与关闭、发送与接收操作,以及相关的使…

java使用HttpClient发送数据的几种情况

1.发送Http 携带 json格式的数据 import org.apache.commons.compress.utils.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org…

稳定运行的以Azure Synapse Dedicated SQL Pool数据仓库为数据源和目标的ETL性能变差时提高性能方法和步骤

在Azure Synapse Dedicated SQL Pool(以前称为SQL Data Warehouse)的ETL性能变差时,可以通过以下方法和步骤来提高性能: 1. 分析和监控性能瓶颈 查看执行计划:使用SQL的SET STATISTICS IO ON和SET STATISTICS TIME O…

华为、华三交换机纯Web下如何创关键VLANIF、操作STP参数

华为交换机WEB操作 使用的是真机S5735,目前主流的版本都适用(V1R5~V2R1的就不在列了,版本太老了,界面完全不一样,这里调试线接的console口,电脑的网络接在ETH口) 「模拟器、工具合集」复制整段内…

OpenCL介绍

OpenCL(Open Computing Language)详解 OpenCL 是一个开源的框架,用于编写在异构平台(包括中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)和其他…

项目搭建:springboot,mybatis, maven

创建一个基于Spring Boot、MyBatis和Maven的项目可以简化很多配置,因为Spring Boot自带了很多自动配置的功能。下面我将给出一个简单的示例来展示如何搭建这样一个项目。 ### 1. 创建一个新的Spring Boot项目 你可以通过Spring Initializr(https://sta…

详解Java数据库编程之JDBC

目录 首先创建一个Java项目 在Maven中央仓库下载mysql connector的jar包 针对MySQL版本5 针对MySQL版本8 下载之后,在IDEA中创建的项目中建立一个lib目录,然后把刚刚下载好的jar包拷贝进去,然后右键刚刚添加的jar包,点击‘添…

网络(TCP)

目录 TCP socket API 详解 套接字有哪些类型?socket有哪些类型? 图解TCP四次握手断开连接 图解TCP数据报结构以及三次握手(非常详细) socket缓冲区以及阻塞模式详解 再谈UDP和TCP bind(): 我们的程序中对myaddr参数是这样…

【笔记】离散数学 1-3 章

1. 数理逻辑 1.1 命题逻辑的基本概念 1.1.1 命题的概念 命题(Proposition):是一个陈述句,它要么是真的(true),要么是假的(false),但不能同时为真和假。例如…