如何使用pymysql和psycopg2执行SQL语句

news2024/11/18 8:49:05

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

1. 准备工作

首先,确保已经安装了pymysqlpsycopg2库。如果尚未安装,可以通过以下命令安装:

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. 最佳实践

  1. 使用连接池:对于高并发应用,使用连接池可以提高性能。
  2. 避免SQL注入:使用参数化查询来防止SQL注入攻击。
  3. 关闭连接:确保在操作完成后关闭连接,以释放资源。
  4. 使用上下文管理器:使用with语句来自动管理资源。

6. 总结

本文介绍了如何使用pymysqlpsycopg2连接MySQL和PostgreSQL数据库,并执行SQL查询、插入、更新和删除操作。我们还探讨了错误处理和最佳实践,以帮助新手朋友更好地理解和使用这些技能。

通过这些知识,你可以开始在Python项目中使用数据库,无论是进行数据存储、检索还是更新。记住,实践是学习的关键,所以尝试在实际项目中应用这些知识,以加深理解。

希望这篇文章对你有所帮助!如果你有任何问题或需要进一步的帮助,请随时提问。

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

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

相关文章

Linux驱动---光电开关、火焰传感器、人体红外传感器

文章目录 一、电路连接二、设备树三、驱动代码 一、电路连接 人体红外 – PF12 检测到人体时会产生一个上升沿 光电开关 – PE15 有遮挡物时会产生一个上升沿 火焰传感器 – PF5 有火焰时会产生一个上升沿 二、设备树 /{ //人体红外PF12human{ compatible "zyx,huma…

电池大师 2.3.9 | 专业电池管理,延长寿命优化性能

Battery Guru 显示电池使用情况信息,测量电池容量(mAh),并通过有用技巧帮助用户改变充电习惯,延长电池寿命。支持显示电池健康状况,优化电池性能。 大小:9.6M 百度网盘:https://pan…

数据库软题7-数据库设计

一、概念结构设计 题1-ER图的属性分类 题2-局部ER图的冲突分类 1.命名冲突 命名冲突有同名异义,异名同义2.结构冲突 结构冲突分为:统一实体不同属性,同一对象在不同关系里可能为属性或者实体 教师其实就是职工,他们有不同的属性…

基于Arduino的超声波测距模块HC-SR04

一. HC-SR04超声波模块简介 HC-SR04超声波模块是一种常用的测距模块,通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差,并据此求出距离。它主要由两个‌压电陶瓷超声传感器和一个外围信号处理电路构成&#…

重生之我在代码随想录刷算法第十九天 | 第77题. 组合、216.组合总和III、 17.电话号码的字母组合

参考文献链接:代码随想录 本人代码是Java版本的,如有别的版本需要请上代码随想录网站查看。 第77题. 组合 力扣题目链接 解题思路 这道题目乍一看可以用暴力解法解决,但如果k的数量增加那就需要套特别多的循环,所以这种组合类…

植物大战僵尸修改器-MFC

创建项目 创建mfc应用 基于对话框 打开资源视图下的 IDD_MFCAPPLICTION2_DIALOG 限制对话框大小 将属性中Border的值改为对话框外框 删除对话框中原有的控件 属性-外观-Caption 设置对话框标题 工具箱中拖放一个按钮 修改按钮名称 将按钮ID改为IDC_COURSE 在MFCApplication2…

django(二):定义第一个函数及url介绍

1.定义index函数 """ django里的第一个函数必须是request,不写会报错 """def index(request):return HttpResponse("Hello, world. Youre at the index of djangoProject.")注意! ①.index函数里的形参必须为request ②.r…

STM32输入捕获模式详解(上篇):原理、测频法与测周法

1. 前言 在嵌入式系统的开发过程中,常常需要对外部信号进行精确的时间测量,如测量脉冲信号的周期、频率以及占空比等。STM32系列微控制器提供了丰富的定时器资源,其中的输入捕获(Input Capture, IC)模式能实现对信号的…

【测试】BUG篇——BUG

bug的概念 定义:⼀个计算机bug指在计算机程序中存在的⼀个错误(error)、缺陷(flaw)、疏忽(mistake)或者故障(fault),这些bug使程序⽆法正确的运⾏。Bug产⽣于程序的源代码或者程序设计阶段的疏忽或者错误。 准确的来说: 当且仅当规格说明&am…

网站集群批量管理-Ansible(ad-hoc)

1. 概述 1. 自动化运维: 批量管理,批量分发,批量执行,维护 2. 无客户端,基于ssh进行管理与维护 2. 环境准备 环境主机ansible10.0.0.7(管理节点)nfs01 10.0.0.31(被管理节点)backup10.0.0.41(被管理节点) 2.1 创建密钥认证 安装sshpass yum install -y sshpass #!/bin/bash ##…

SpringBoot整合MyBatis记录

整体目录结构 创建数据库 创建一个MySQL的表,表名是student。 create table student (id int auto_increment comment 唯一标识idprimary key,name varchar(30) not null comment 姓名,age int not null comment 年龄 ) 插入一条数据记录到数据库当中去…

【数据结构与算法-高阶】并查集

【数据结构与算法-高阶】并查集 🥕个人主页:开敲🍉 🔥所属专栏:数据结构与算法🍅 🌼文章目录🌼 1. 并查集原理 2. 并查集实现 3. 并查集应用 1. 并查集原理 在一些应用问题中&…

Matlab|基于遗传粒子群算法的无人机路径规划【遗传算法|基本粒子群|遗传粒子群三种方法对比】

目录 主要内容 模型研究 部分代码 结果一览 下载链接 主要内容 为了更高效地完成复杂未知环境下的无人机快速探索任务,很多智能算法被应用于无人机路径规划方面的研究,但是传统粒子群算法存在粒子更新思路单一、随机性受限、收敛速度慢…

修改calibre-web最大文件上传值

修改calibre-web最大文件上传值 Windows安装calibre-web,Python-CSDN博客文章浏览阅读541次,点赞10次,收藏11次。pip install calibreweb报错:error: Microsoft Visual C 14.0 or greater is required. Get it with "Microso…

案例:问题处理与原因分析报告的模板

系统上线后暴露的问题也是一种财富,我们需要从中吸收经验教训,规避其他类似的问题。对于上线后的问题如何进行原因分析,我提供两个分析报告的模板,供大家参考。 模板案例1:共性现象的原因分析报告 模板案例二&#xf…

C(十三)for、while、do - while循环的抉择 --- 打怪闯关情景

前言: 继C(十)for循环 --- 黑神话情景之后👉 https://blog.csdn.net/2401_87025655/article/details/142684637 今天,杰哥想用一个打怪闯关的场景让与大家一起初步认识一下for、while、do - while循环的抉择。&#xf…

Docker在linux系统中的下载与使用

Docker在linux系统中的下载与使用 一、docker作用,下载及安装二、docker镜像三、创建容器四、容器数据卷 一、docker作用,下载及安装 ubuntu下载安装docker 命令:在ubuntu上面执行这个命令 Docker version:查看docker是否安装成功 配置阿里云镜像加速:进入阿里云网站…

阿里140滑块-滑块验证码逆向分析思路学习

一、声明! 原创文章,请勿转载! 本文内容仅限于安全研究,不公开具体源码。维护网络安全,人人有责。 文章中所有内容仅供学习交流使用,不用于其他任何目的,均已做脱敏处…

JUC高并发编程8:读写锁

1 概述 1.1 悲观锁和乐观锁 在并发编程中,锁机制是用来控制多个线程对共享资源的访问。悲观锁和乐观锁是两种不同的并发控制策略。 1.1.1 悲观锁(Pessimistic Locking) 悲观锁假设在最坏的情况下,多个线程会同时访问和修改共享…

Qt-QDockWidget浮动窗口相关操作(49)

目录 描述 使用 描述 在 Qt 中,浮动窗⼝也称之为铆接部件。浮动窗⼝是通过 QDockWidget类 来实现浮动的功能。浮动窗口⼀般是位于核心部件的周围,可以有多个。 使用 创建我们可以参考下面的语法格式 使用起来也很简单,不过只能创建一个 Q…