如何使用pymysql和psycopg2执行SQL语句
在Python中,pymysql和psycopg2是两个非常流行的库,用于与MySQL和PostgreSQL数据库进行交互。本文将详细介绍如何使用这两个库来执行SQL查询、插入、更新和删除操作。

1. 准备工作
首先,确保已经安装了pymysql和psycopg2库。如果尚未安装,可以通过以下命令安装:
pip install pymysql psycopg2
2. 连接数据库
2.1 连接MySQL
使用pymysql连接MySQL的代码示例:
import pymysql# 连接数据库
connection = pymysql.connect(host='localhost',user='your_username',password='your_password',database='your_database',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor
)# 创建游标对象
with connection.cursor() as cursor:# 执行SQL语句sql = "SELECT * FROM your_table"cursor.execute(sql)result = cursor.fetchall()for row in result:print(row)# 关闭连接
connection.close()
2.2 连接PostgreSQL
使用psycopg2连接PostgreSQL的代码示例:
import psycopg2# 连接数据库
connection = psycopg2.connect(host="localhost",user="your_username",password="your_password",dbname="your_database"
)# 创建游标对象
with connection.cursor() as cursor:# 执行SQL语句sql = "SELECT * FROM your_table"cursor.execute(sql)result = cursor.fetchall()for row in result:print(row)# 关闭连接
connection.close()
3. 执行SQL操作
3.1 查询操作
3.1.1 MySQL查询
with connection.cursor() as cursor:sql = "SELECT * FROM your_table WHERE condition"cursor.execute(sql)result = cursor.fetchall()for row in result:print(row)
3.1.2 PostgreSQL查询
with connection.cursor() as cursor:sql = "SELECT * FROM your_table WHERE condition"cursor.execute(sql)result = cursor.fetchall()for row in result:print(row)
3.2 插入操作
3.2.1 MySQL插入
with connection.cursor() as cursor:sql = "INSERT INTO your_table (column1, column2) VALUES (%s, %s)"cursor.execute(sql, ('value1', 'value2'))connection.commit()
3.2.2 PostgreSQL插入
with connection.cursor() as cursor:sql = "INSERT INTO your_table (column1, column2) VALUES (%s, %s)"cursor.execute(sql, ('value1', 'value2'))connection.commit()
3.3 更新操作
3.3.1 MySQL更新
with connection.cursor() as cursor:sql = "UPDATE your_table SET column1 = %s WHERE condition"cursor.execute(sql, ('new_value',))connection.commit()
3.3.2 PostgreSQL更新
with connection.cursor() as cursor:sql = "UPDATE your_table SET column1 = %s WHERE condition"cursor.execute(sql, ('new_value',))connection.commit()
3.4 删除操作
3.4.1 MySQL删除
with connection.cursor() as cursor:sql = "DELETE FROM your_table WHERE condition"cursor.execute(sql)connection.commit()
3.4.2 PostgreSQL删除
with connection.cursor() as cursor:sql = "DELETE FROM your_table WHERE condition"cursor.execute(sql)connection.commit()
4. 错误处理
在执行数据库操作时,可能会遇到各种错误,如连接失败、SQL语法错误等。正确的错误处理可以确保程序的健壮性。
try:with connection.cursor() as cursor:cursor.execute(sql)
except pymysql.MySQLError as e:print(f"Error: {e}")
finally:connection.close()
5. 最佳实践
- 使用连接池:对于高并发应用,使用连接池可以提高性能。
- 避免SQL注入:使用参数化查询来防止SQL注入攻击。
- 关闭连接:确保在操作完成后关闭连接,以释放资源。
- 使用上下文管理器:使用
with语句来自动管理资源。
6. 总结
本文介绍了如何使用pymysql和psycopg2连接MySQL和PostgreSQL数据库,并执行SQL查询、插入、更新和删除操作。我们还探讨了错误处理和最佳实践,以帮助新手朋友更好地理解和使用这些技能。
通过这些知识,你可以开始在Python项目中使用数据库,无论是进行数据存储、检索还是更新。记住,实践是学习的关键,所以尝试在实际项目中应用这些知识,以加深理解。
希望这篇文章对你有所帮助!如果你有任何问题或需要进一步的帮助,请随时提问。
相关文章:
如何使用pymysql和psycopg2执行SQL语句
在Python中,pymysql和psycopg2是两个非常流行的库,用于与MySQL和PostgreSQL数据库进行交互。本文将详细介绍如何使用这两个库来执行SQL查询、插入、更新和删除操作。 1. 准备工作 首先,确保已经安装了pymysql和psycopg2库。如果尚未安装&a…...
linux无法使用ll命令
ll命令是ls -l的别名,无法使用通常是该用户没有该别名配置,只需要简单添加即可使用 修改~/.bashrc # 备份 cp ~/.bashrc ~/.bashrc.source # 编辑 vim ~/.bashrc添加如下内容 # 别名 alias llls -l加载配置 source ~/.bashrc...
STM32输入捕获模式详解(上篇):原理、测频法与测周法
1. 前言 在嵌入式系统的开发过程中,常常需要对外部信号进行精确的时间测量,如测量脉冲信号的周期、频率以及占空比等。STM32系列微控制器提供了丰富的定时器资源,其中的输入捕获(Input Capture, IC)模式能实现对信号的…...
面试中遇到的关于Transformer模型的问题有哪些?
Transformer是深度学习中极具影响力的模型架构之一,广泛应用于自然语言处理、计算机视觉等领域。它通过自注意力机制和并行计算等特点,取得了比传统模型(如RNN、LSTM)更优异的性能。本文将针对Transformer的多个关键问题进行详细探…...
【UE】自动添加Megascans所有资产到自己的账户
1. 复制如下代码: ((async (startPage 0, autoClearConsole true) > {const getCookie (name) > {const value ; ${document.cookie};const parts value.split(; ${name});if (parts.length 2) return parts.pop().split(;).shift();}const callCacheA…...
【函数】4.函数的单调性
本节课没有笔记示例,自己做好笔记! 复合函数的单调性 最值 没讲 提醒我...
网格剖分-耳切法效果展示
1.前言 将简单多边形转换成一组由同样顶点组成的三角形集合是计算机图形学中的一个经典问题。问题中,简单多边形是指由一组有序顶点组成的,点V0~点Vn-1。相邻的顶点之间通过边(Vi,Vi-1)连接,并且边(Vn-1,V0)连接起始点…...
电磁力、强相互作用力、弱相互作用力、强核力,以及它们之间的关系
电磁力、强相互作用力、弱相互作用力、强核力,以及它们之间的关系: 电磁力 (Electromagnetic Force): 定义:电磁力是带电粒子之间通过电荷相互作用产生的力。它由电场和磁场共同作用,影响带电粒子的运动。传递粒子:电磁…...
2.安装keepalived详细过程
1.下载地址: keepalived-2.3.1 keepalived-2.1.2 keepalived-2.0.18 三个版本tar包 2.keepalived安装详细过程 (1) 解压keepalived tar包 tar -zxvf keepalived-2.0.18.tar.gz(2)进入keepalived目录然后配置 #进入keepalived目录 cd keepalived-2.0.18/ #配置keepalived[配…...
面试题1-fail-safe机制与fail-fast 机制
1.定义 Fail-safe 和 Fail-fast,是多线程并发操作集合时的一种失败处理机制。 1.1.Fail-Safe机制 1.1.1.定义 Fail-Safe 机制的设计目标是在发生故障时,系统仍然能够继续运行,尽量避免导致整个系统崩溃。即使发生错误或异常,系统…...
C/C++复习(一)
1.sizeof 关于sizeof我们是经常使用的,所以使用方法就不需要提及了,这里我们需要注意的是,sizeof 后面如果是表达式可以不用括号,并且sizeof实际上不参与运算,返回的是内容的类型大小(size_t类型࿰…...
iOS Object-C 将数组倒置(倒叙)
使用NSArray自带的对象方法:reverseObjectEnumerator 代码如下: NSArray * tempArray [[NSArray alloc]initWithObjects:"a","b","c","d", nil]; //将tempArray转换成["d","c","b","a"]; …...
动态轻量级线程池项目
动态线程池: 使用线程池ThreadPoolExecutor过程中你是否有以下痛点呢? ① 代码中创建了一个ThreadPoolExecutor,但是不知道参数设置多少比较合适。 ② 凭经验设置参数值,上线后发现需要调整,改代码重新发布服务&…...
【AI知识点】批归一化(Batch Normalization)
更多AI知识点总结见我的专栏:【AI知识点】 AI论文精读、项目和一些个人思考见我另一专栏:【AI修炼之路】 有什么问题、批评和建议都非常欢迎交流,三人行必有我师焉😁 批归一化(Batch Normalization,BN&…...
【低代码】前端低代码开发日记2:遇到的问题(1)双向绑定
在前期的快速迭代阶段,虽然界面有些杂乱,但整体功能尚能凑合运行。真正让人头疼的,还是接下来几个关键功能的实现。 遇到的问题 双向绑定 在Vue中,v-model提供了方便的双向绑定功能,它是modelValue属性和onUpdate:m…...
10.9作业
1、鼠标和键盘事件 #include "widget.h" #include "ui_widget.h" #include <QDebug> #include <QMouseEvent>widget::widget(QWidget *parent): QWidget(parent), ui(new Ui::widget) {ui->setupUi(this);this->setWindowFlag(Qt::Fram…...
Go 语言中的错误和异常:设计理念与优势
Go 语言中的错误和异常:设计理念与优势 在软件开发中,错误处理是一个至关重要的环节。不同的编程语言对于错误和异常的处理方式各有不同。Go 语言将错误和异常进行了明确区分,这种设计理念带来了许多独特的优势。本文将深入探讨 Go 语言中错误…...
sqli-labs less-20 less-21 less-22 cookie注入
COOKIE 作用:是由网络服务器存储在你电脑硬盘上的一个txt类型的小文件,它和你的网络行为有关,记录了当前用户的状态 形式:keyvalue 例如:当我们登录某个账号后,服务器会在cookies进行记录 个人理解…...
IDEA下“File is read-only”可能原因及“找不到或无法加载主类”问题的解决
1.File is read-only”可能原因 写代码时想要修改这个静态变量的值,把这个语句注释掉,发现在这个文件中File is read-only无法编辑修改,于是想去掉这个状态 网上查看的解释大多是在File栏目或File->File Properties下可以找到Make File W…...
MySQL【知识改变命运】03
表的基本操作 1:查看所有表2:创建表3:查看表结构4:修改表5: 删除表 前言:我们先了解一个知识: MySQL安装后会有MySQL服务——管理多个库——每个库管理多个表——每个表管理多行数据——数据行由…...
英雄联盟ChampR助手:5分钟快速上手,轻松获取专业出装符文
英雄联盟ChampR助手:5分钟快速上手,轻松获取专业出装符文 【免费下载链接】champ-r 🐶 Yet another League of Legends helper 项目地址: https://gitcode.com/gh_mirrors/ch/champ-r 还在为每次游戏都要手动查找英雄出装和符文而烦恼…...
Flow.js源码深度解析:分块算法、上传策略与事件系统的实现原理
Flow.js源码深度解析:分块算法、上传策略与事件系统的实现原理 【免费下载链接】flow.js A JavaScript library providing multiple simultaneous, stable, fault-tolerant and resumable/restartable file uploads via the HTML5 File API. 项目地址: https://gi…...
告别重复造轮子:用快马AI一键生成SpringBoot通用后台管理模块
最近在做一个后台管理系统的项目,发现每次从零开始搭建SpringBoot框架都要重复写很多样板代码,特别浪费时间。后来尝试用InsCode(快马)平台的AI生成功能,效率提升了好几倍。今天就来分享下如何快速生成SpringBoot通用后台模块。 1. 后台管理…...
别再死记公式了!用TL072运放设计带通滤波器,调出干净正弦波的实战心得与误区盘点
TL072运放带通滤波器实战:从波形失真到纯净正弦波的调试艺术 当你第一次用TL072搭建带通滤波器时,是否也遇到过这样的场景:按照教科书上的公式计算参数,焊接好电路,示波器上却显示着畸形的波形——要么顶部扁平像被削峰…...
农业遥感避坑指南:用大疆P4M多光谱数据生成NDVI,选智图还是Metashape?
农业遥感实战:大疆P4M多光谱数据NDVI生成工具选型指南 站在农田边缘,手持大疆精灵4多光谱版(P4M)遥控器的你,刚刚完成了一次作物长势监测飞行。无人机带回的宝贵数据,正等待转化为直观的NDVI图——这张&quo…...
GLM-OCR在跨境电商中的应用:多语言商品说明书OCR→自动翻译预处理
GLM-OCR在跨境电商中的应用:多语言商品说明书OCR→自动翻译预处理 1. 项目概述与背景 跨境电商卖家经常面临一个共同难题:来自不同国家的商品说明书语言各异,手动翻译不仅耗时耗力,还容易出错。传统OCR工具虽然能识别文字&#…...
HARMONYOS应用实例262:函数图像变换
函数图像变换 功能:演示 y=f(x)y=f(x)y=f(x) 到...
【飞控】QGroundControl与Mission Planner:如何根据项目需求选择最佳地面站
1. 两款地面站软件的核心定位差异 第一次接触无人机开发时,我也曾被QGroundControl和Mission Planner搞得晕头转向。这两款软件就像工具箱里的不同工具,关键是要知道什么时候该用哪一把。QGroundControl(简称QGC)给我的第一印象是…...
突破B站字幕处理瓶颈:BiliBiliCCSubtitle全流程解决方案
突破B站字幕处理瓶颈:BiliBiliCCSubtitle全流程解决方案 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 一、问题发现:字幕处理的现实困境…...
Open-AutoGLM在社交通讯中的应用:自动发微信、刷朋友圈演示
Open-AutoGLM在社交通讯中的应用:自动发微信、刷朋友圈演示 1. 项目概述 1.1 什么是Open-AutoGLM Open-AutoGLM是一款基于视觉语言模型的AI手机智能助理框架。它能通过自然语言指令理解用户需求,自动操控安卓设备完成各种任务。想象一下,只…...
