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

【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

相关文章:

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

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

家庭路由器跑PCND的优点

在当今数字化的时代,PCDN(Peer-to-Peer Content Delivery Network)技术逐渐走入人们的视野,有人考虑在家庭路由器上跑PCDN,下面是优点: 1.资源利用最大化 家庭网络在很多时候存在闲置的带宽和计算资源。通…...

ASP.NET Core API + MySql

环境 数据库: mysql8.0 后端: vs2022 ASP.NET Core API .net 8 前端: Hbuilderx bootstrap 5.3.0 jquery v3.7.1 bootstrap-table 1.23.5 创建项目 添加资源包 AutoMapper Microsoft.EntityFrameworkCore.Tools 8.0.0 Pomelo.EntityFramew…...

torch.optim.lr_scheduler.ReduceLROnPlateau

torch.optim.lr_scheduler.ReduceLROnPlateau 是 PyTorch 中的一种学习率调度器,主要用于在模型训练过程中根据某些指标(如验证损失)动态调整学习率。它是一种基于性能指标动态调整学习率的策略,而不是预定义的固定时间调整。 主要…...

Dubbo

官方文档: Java SDK 手册 | Apache Dubbo 一 RPC及Dubbo 1 什么是RPC dubbo是⼀款⾼性能的rpc框架。什么是rpc呢? rpc是⼀种协议:是⼀种远程过程调⽤(remote procudure call)协议 rpc协议是在应⽤层之上的协议&…...

算法1(蓝桥杯18)-删除链表的倒数第 N 个节点

问题: 给你一个链表,删除链表的倒数第 n 个节点,并且返回链表的头节点。 输入:head 1 -> 2 -> 3 -> 4 -> 5 -> null, n 2 输出:1 -> 2 -> 3 -> 5 -> null输入:head 1 ->…...

SEC_ASA 第一天作业

拓扑: 实验需求: 注意:在开始作业之前必须先读“前言”,以免踩坑!!!(☞敢点我试试) 按照拓扑图配置VLAN连接。 注意:ASA防火墙的 Gi0/1口需要起子接口&#x…...

《C语言程序设计现代方法》note-8 指针和数组的关系

文章目录 助记提要12章 指针和数组12.1 指针的算术运算12.2 指针用于数组处理结合使用*和运算符 12.3 数组名作为指针数组名可以用作指针指针也可以当做数组名数组型实参 12.4 指针和多维数组处理每个元素处理行处理列多维数组名做指针 12.5 指针和变长数组 助记提要 指针支持…...

安科瑞电能质量治理产品在分布式光伏电站的应用-安科瑞黄安南

1.概述 随着全球对可再生能源需求的增加,分布式光伏电站的建设和发展迅速。然而,分布式光伏电站的运行过程中面临着一系列问题,比如导致企业关口计量点功率因数过低、谐波污染等。这些问题不仅影响光伏电站自身的运行效率,还会对…...

JavaScript 的原生数组方法和 Vue 的响应式系统之间的差异

发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。 JavaScript 的原生数组方法和 Vue 的响应式系统之间的差异主要体现在 Vue 如何追踪数组的变化,以及 Vue 如何处理数组…...

项目组件框架介绍[bRPC]

文章目录 前言bRPC安装bRPC的简单使用protobuf简单使用Echo服务远程调用Echo服务 与etcd关联 前言 bRPC是百度开源的一款工业级RPC框架,功能强大, 常用于搜索、存储、机器学习、广告、推荐等高性能系统。 bRPC安装 使用源码安装即可, 在安装前要确认依赖 sudo apt…...

基于MobileNetV3架构动物声音分类识别与应用系统实现

1.摘要 本文主要实现了一个基于MobileNetV3架构的深度学习模型用于动物声音分类识别任务。该MobileNetV3是一种轻量级的卷积神经网络,旨在实现高效分类性能,本章在猫、狗、海豚等三个动物声音(.wav数据集)上进行了训练和测试,即在…...

ragflow连ollama时出现的Bug

ragflow和ollama连接后,已经添加了两个模型但是ragflow仍然一直warn:Please add both embedding model and LLM in Settings > Model providers firstly.这里可能是我一开始拉取的镜像容器太小,容不下当前添加的模型,导…...

[大数据]Hudi编译集成

1. 编译环境准备 相关组件版本如下: Hadoop3.3.1Hive3.1.3Flink1.13.6,scala-2.12Spark3.3.1,scala-2.12 1)安装Maven (1)上传apache-maven-3.6.1-bin.tar.gz到/opt/software目录,并解压更名…...

rk3588-ubuntu22.04系统网关实现路由器功能:

rk3588-ubuntu22.04系统网关实现路由器功能: 场景需求描述: 需求背景: 场景一:通过网线eth0/(路由器wlan0)访问外网: 如果网关 和 设备所处的环境可以通过网线联网或者路由器联网,那么不需要将网关配置成…...

Python部署教程-Python项目怎样在Pycharm中运行

大家好,我是程序员徐师兄,今天为大家带来的是Python部署教程-Python项目怎样在Pycharm中运行。Python安装部署教程,包括软件的下载,软件的安装。该系统采用 Python语言开发,flask、Django 框架,MySql 作为数…...

代码随想录算法训练营第51期第14天 | 226. 翻转二叉树、101. 对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

226. 翻转二叉树 226. 翻转二叉树https://leetcode.cn/problems/invert-binary-tree/1.昨天忘了声明,如果都用C的话,我大概率写不完,所以思路方面,我可能考虑用pyhon先写,后续会用文心一言转换成C 2.这里可以直接用层…...

C/C++常见符号与运算符

C/C常见符号与运算符对照表 符号用法与意义与Java类比:在条件运算符中 (cond ? x : y) 表示条件为假的分支;在 switch-case 中如 case 1:表示标签结束点;在自定义标签如 label: 中用于 goto 跳转Java中? :三元运算相同;switch-case中也有:…...

maven报错“找不到符号“

问题 springboot项目 maven编译打包过程,报错"找不到符号" 解决 很多网上方法都试过,都没用 换jdk,把17->21...

开源数据同步中间件(Dbsyncer)简单玩一下 mysql to mysql 的增量,全量配置

一、什么是Dbsyncer 1、介绍 Dbsyncer是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景,支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预警…...

【Kubernetes理论篇】容器集群管理系统Kubernetes(K8S)

Kubernetes集群部署基本管理实战 这么好的机会,还在等什么! 01、Kubernetes 概述 K8S是什么 K8S 的全称为 Kubernetes (K12345678S),PS:“嘛,写全称也太累了吧,写”。不如整个缩写 K8s 作为缩写的结果…...

鸿蒙ArkTS语言基础语法详解

文章目录 鸿蒙ArkTS语言基础语法详解一、引言二、ArkTS语言概述1. ArkTS语言特点2. TypeScript基础语法2.1 类型注解2.2 接口2.3 泛型2.4 类的继承2.5 类的访问修饰符 三、ArkTS的基本组成3.1 装饰器3.2 UI描述3.3 自定义组件3.4 系统组件3.5 属性方法和事件方法 四、自定义组件…...

两条链表相同位数相加

优质博文IT-BLOG-CN 一、题目 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这…...

C语言单元总结

黑色加粗表示刷题刷到这样的题 红色加粗表示可能重要 单元一 程序设计宏观认识 C语言程序框架 C语言程序最基本的程序框架由两部分构成,分别是 1) 编译预处理 2) 函数组 C语言程序构成 C程序最大的特点就是所有的程序都是用函数来装配的,函数是构成…...

【Golang】Go语言编程思想(六):Channel,第二节,使用Channel等待Goroutine结束

使用 Channel 等待任务结束 首先回顾上一节 channel 这一概念介绍时所写的代码: package mainimport ("fmt""time" )func worker(id int, c chan int) {for n : range c {fmt.Printf("Worker %d received %c\n",id, n)} }func crea…...

Oracle RAC开启和关闭日志归档Log Archive

一、开启日志归档模式 # srvctl stop database -d <DB_NAME> # srvctl start instance -d <DB_NAME> -i <INSTANCE_NAME> -o mount # 停止 RAC 数据库的所有实例&#xff1a; [oracleora19crac1:/home/oracle]$srvctl stop database -d orcl # 启动第一个实…...

今天调了个转速的小BUG

同事说转速表有个bug&#xff0c;转速停止后&#xff0c;继电器没有恢复到初始状态。若停止之前是报警&#xff0c;继电器吸合&#xff0c;则停止后继电器还是吸合。我心想不会啊&#xff0c;这软件都弄了好几年了&#xff0c;一直也没出现过状况。 经过与调试同事的沟通&#…...

RabbitMQ七种工作模式之 RPC通信模式, 发布确认模式

文章目录 六. RPC(RPC通信模式)客户端服务端 七. Publisher Confirms(发布确认模式)1. Publishing Messages Individually(单独确认)2. Publishing Messages in Batches(批量确认)3. Handling Publisher Confirms Asynchronously(异步确认) 六. RPC(RPC通信模式) 客⼾端发送消息…...

【Python教程】Python3基础篇之基础语法

博主介绍:✌全网粉丝21W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。 感兴趣的可…...

`yarn list --pattern element-ui` 是一个 Yarn 命令,用于列出项目中符合指定模式(`element-ui`)的依赖包信息

文章目录 命令解析&#xff1a;功能说明&#xff1a;示例输出&#xff1a;使用场景&#xff1a; yarn list --pattern element-ui 是一个 Yarn 命令&#xff0c;用于列出项目中符合指定模式&#xff08; element-ui&#xff09;的依赖包信息。 命令解析&#xff1a; yarn list…...

使用docker-compose安装Milvus向量数据库及Attu可视化连接工具

首先确保系统已经安装上了docker 然后去https://github.com/docker/compose/releases/下载安装docker-compose 跟随自己下系统和服务器情况下载 上传到服务器 mv docker-compose-linux-aarch64 docker-compose chmod x docker-compose2.dockr-compose命令 docker-compose …...

IoTDB Allocate WAL Buffer Fail Because out of memory

问题及现象 时序数据库 IoTDB 集群报错&#xff1a; The write is rejected because the wal directory size has reached the threshold 53687091200 bytes. You may need to adjust the flush policy of the storage storageengine or the IoTConsensus synchronization pa…...

Go支付中台方案:多平台兼容与多项目对接

一、中台的概念 中台是一种企业级的架构模式&#xff0c;它处于前台应用和后台资源之间&#xff0c;将企业核心能力进行整合、封装&#xff0c;形成一系列可复用的业务能力组件。这些组件就像乐高积木一样&#xff0c;可以被不同的前台业务快速调用&#xff0c;从而避免重复开…...

设计模式:23、享元模式

目录 0、定义 1、享元模式的三种角色 2、享元模式的UML类图 3、示例代码 0、定义 运营共享技术有效地支持大量细粒度的对象 1、享元模式的三种角色 享元接口&#xff08;Flyweight&#xff09;&#xff1a;是一个接口&#xff0c;该接口定义了享元对外公开其内部数据的方…...

如何使用靜態IP代理?【詳細教程】

靜態IP地址是手動分配給設備或伺服器的固定不變的 IP。與動態 IP 地址不同&#xff0c;動態 IP 地址由 DHCP 伺服器自動分配&#xff0c;並且會隨時間而變化。​​​​​​​ 如何獲取和設置靜態IP地址 一、檢查是否需要靜態IP&#xff1f; 在配置靜態 IP 之前&#xff0c;請…...

C++day3

1、把课上类的三个练习题的构造函数写出来 #include <iostream> #include <cstring>using namespace std;class Car {string color;string brond;double speed; public:Car(string c,string b,double s):color("black"),brond("Benz"),speed(…...

ABAP开发-批量导入BAPI和BDC_1

系列文章目录 文章目录 系列文章目录[TOC](文章目录) 前言一、概念二、BDC和BAPI数据导入1、BDC数据导入&#xff08;录屏&#xff09;2、BAPI数据导入 三、实例1、BAPI2、BDC 总结 前言 一、概念 SAP中&#xff0c;对一个事务码反复操作并且达到批量处理数据的效果&#xff0…...

iOS 语音循环播放设置

本地文件、网络文件&#xff0c;区别就是URL创建方式 1、使用AVPlayerItem与AVPlayer&#xff08;这个简单&#xff0c;只需要设置回调&#xff09;&#xff0c;而不是AVAudioPlayer&#xff08;这个麻烦&#xff0c;需要设置代理、计时器等等&#xff09; 2、设置AVPlayerIte…...

PlantUML——类图

背景 类图是UML模型中的静态视图&#xff0c;其主要作用包括&#xff1a; 描述系统的结构化设计&#xff0c;显示出类、接口以及它们之间的静态结构和关系。简化对系统的理解&#xff0c;是系统分析与设计阶段的重要产物&#xff0c;也是系统编码和测试的重要模型依据。 在U…...

ASP.NET Core实现鉴权授权的几个库

System.IdentityModel.Tokens.Jwt 和 Microsoft.AspNetCore.Authentication.JwtBearer 是两个常用的库&#xff0c;分别用于处理 JWT&#xff08;JSON Web Token&#xff09;相关的任务。它们在功能上有一定重叠&#xff0c;但侧重点和使用场景有所不同。 1. System.IdentityM…...

生成:安卓证书uniapp

地址&#xff1a; https://ask.dcloud.net.cn/article/35777 // 使用keytool -genkey命令生成证书&#xff1a; 官网&#xff1a; keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore ----------------------------------…...

探索Web3:从去中心化应用到全球数字化未来

Web3 是互联网发展的下一步&#xff0c;它通过去中心化的理念重新定义了数字世界。与传统的Web2相比&#xff0c;Web3将数据主权交还给用户&#xff0c;让每个人都可以在没有中介的情况下安全地交换信息和价值。本文将探索Web3的基本概念&#xff0c;去中心化应用&#xff08;D…...

AR向左,AI向右,智能眼镜来到十字路口

从Google Glass到Vision Pro&#xff0c;人类对智能眼镜的探索有进展&#xff0c;但都不算成功&#xff0c;直至Ray-Ban Meta的出现&#xff0c;这才让行业对智能眼镜重燃信心&#xff0c;从去年开始&#xff0c;随着AI大模型应用的深入&#xff0c;智能眼镜又有了新的故事可说…...

CTF靶场搭建及Web赛题制作与终端docker环境部署

写在前面 ╔══════════════════════════════════════════════════════════════════════════╗ 哈喽大家好&#xff01;我是Myon&#xff0c;趁着我的云服务器还没过期&#xff0c;这次给大家出一…...

Java 应用程序CPU 100%问题排查优化实战

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

计网(王道的总结)-数据链路层-网络层-传输层

由于时间有限&#xff0c;把每个王道的章节最后一节放在一起&#xff0c;分别看看复习知识点。 3.6.4 IEEE 802.11 无线局域网 重点&#xff1a; 3.7 广域网 真题考频&#xff1a;极低 3.8以太网交换机 4.1网络层的功能 4.2.1IPv4分组 最重要的&#xff1a; TTL&#xff1a;…...

1-4 C单向链表

目录 1.0 基本概念 2.0 初始化链表 2.0 插入数据 3.0 删除数据 4.0 获取链长度 5.0 查询链表 6.0 返回第一个节点 7.0 打印链表节点 8.0 释放内存 9.0 链表调用 1.0 基本概念 线性表的顺序存储&#xff1a;用一块连续的内存空间&#xff0c;线性表的链式存储&#xff…...

在Windows 10中使用SSH远程连接服务器(附花生壳操作方法)

SSH 在 linux 中是一种重要的系统组件&#xff0c;用户可以使用 SSH 来远程连接 linux 系统的计算机&#xff0c;或者传输文件。不过在 win10 以前&#xff0c;windows 并不原生支持 SSH&#xff0c;需要借助第三方工具来使用 SSH 功能。而实际上&#xff0c;微软在 2015 年就曾…...

韶音科技嵌入式面试题及参考答案

Bootloader 的启动流程是什么&#xff1f; Bootloader 是在操作系统内核运行之前运行的一段小程序。它的启动流程主要分为以下几个阶段。 首先是硬件初始化阶段。这个阶段会对处理器以及一些关键的硬件设备进行初始化。比如&#xff0c;会配置处理器的工作模式、设置堆栈指针等…...

C++ ——— 类的 6 个默认成员函数之 构造函数

目录 何为默认成员函数 一、构造函数 构造函数的概念 构造函数的特性 日期类的构造函数 栈的构造函数 编译器自动生成的构造函数 总结 何为默认成员函数 默认成员函数就是用户没有显示实现&#xff0c;但是编译器会自动生成的成员函数称为默认成员函数 一、构造函数 …...