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

python连接MySQL数据库使用pymysql

开头

        经过这么一段时间的学生信息管理系统的摸爬滚打,不断的学习更新的知识,不断修改自己的认知,针对pymysql以及MySQL数据库的知识做个总结,以纪念我这段时间的学习。

目录

开头

pymysql的使用流程

1.导入pymysql的工具包

方法一、使用pip工具

可能会出现的问题

方法二、使用pycharm中配置到python解释器 

可能会出现的问题

2.连接数据库

3. 使用cursor获取游标

4.根据游标使用相关的方法

5.关闭游标和数据库

为什么要关闭游标?

为什么要关闭数据库?

为什么要回滚事务?

结尾


pymysql的使用流程

pymysql的使用也是有一定流程的,需要有如下几步

1.导入pymysql的工具包

方法一、使用pip工具

可以使用pip工具,在终端中输入如下代码

pip install pymysql
可能会出现的问题

方法一的pip工具需要把scripts配置到系统中,打开环境变量,把scripts的文件路径复制,然后添加到系统变量中就可以了 

方法二、使用pycharm中配置到python解释器 

此时需要点击settings——Project:项目名——Python Interpreter

然后点击右侧这一栏,这是你的项目,选中有着python解释器的项目

点击这个+号——Available Packages中的下面有个放大镜的一栏,输入pymysql即可,然后Install Package即可,不过此时仍需要等待它提示安装好了

可能会出现的问题

点击+号之后,等待好久pycharm的packages显示不出来,建议就是清除缓存,然后重启;

2.连接数据库

当然是需要你去连接你的数据库了,如果不链接的话,你怎么用MySQL数据库呢。

import json
import pymysqlclass DatabaseConnect:_json_config = None # 设置一个类属性@classmethod # 使用静态方法,注解告诉解释器要干什么def load(cls, json_path=r'E:\UBD_3\database_login.json'):if not cls._json_config:with open(json_path, 'r') as f:cls._json_config = json.load(f) # 通过该cls对象给类属性添加相关的信息,以实现只读一次json文件# print(_json_config)def __init__(self):try:self.load()# self.connect_database()except Exception as e:print('初始化过程错误' + str(e))def connect_database(self):try:db = pymysql.connect(host=self._json_config['host'],port=self._json_config['port'],user=self._json_config['username'],password=self._json_config['password'],charset=self._json_config['charset'],database=self._json_config['database'])print('数据库连接成功')return db  #  这里返回db是为了之后使用游标更方便except pymysql.Error as e:print(f"数据库连接异常: {type(e).__name__}: {e}")

上述代码中关键连接部分在 connect_database方法中,然后根据你的host、port、user、password、database等参数需要使用,这样才可以连接到MySQL数据库,相应的设置异常捕获机制自然会更容易做好。

3. 使用cursor获取游标

pymysql的方法使用需要用到游标

首先,需要创建游标对象根据你的连接的返回值,上述代码连接数据库的方法返回了db

 然后,创建游标对象

# 创建游标对象
cur = db.cursor()

4.根据游标使用相关的方法

sqlquery = 'select * from students where id=%d'  # 这里的from之后的students是你的数据库中的表
value = None # 这里的value值需要你自己传入
cur.execute(sqlquery, value)  #  pymysql库有自动匹配的方法,虽然你自己可以传入的%s,然后他会去转成int型,不过你传入的数据不能是错误的
result = cur.fetchall()  # 获取返回值
print(result)  # 把返回值输出出来

5.关闭游标和数据库

首先,会提出这个问题,为什么要去关闭游标和数据库,然后又会提出各种问题

为什么要关闭游标?

1.为了释放资源,在游标使用的过程之中,它会占用一定的内存资源来存储信息,如果不及时关闭的话看这些资源会被一直浪费;它还会影响到数据库的连接,可能现在你有100个可以进行连接的游标接口,然后你创建了一百个游标,那你之后创建的游标可能就无法使用了。

2.为了保持数据的一致,当你创建了一个游标,然后又创建了一个游标之后,你进行的操作分别在这两个游标之后,然后你第二个创建的游标的跟的方法就可能会读出来第一个游标方法返回的数据。当你进行一个类似的操作的时候,如果返回的值也是类似的话,可以考虑是游标未关闭造成的,这个数据返回与预期不一致的问题。

为什么要关闭数据库?

是这么理解的,就像是你拿个桶要接水,除非在你后面的那个人跟你说不用关,不然你打可能会直接关掉,数据库也会像这样,使用完了就会关掉,不然都话在这之间会有浪费的资源,时间长了之后还会造成卡顿等现象,然后卡死。

为什么要回滚事务?

因为当初出现错误的时候,回滚事务可以直接回到在未执行的时候,这时候使用异常处理机制,try:成立就提交事务,不成立就回滚事务。

结尾

既然看到结尾了,那就说个再见吧,没有什么太多的了,如有不同见解,评论指教即可。

相关文章:

python连接MySQL数据库使用pymysql

开头 经过这么一段时间的学生信息管理系统的摸爬滚打,不断的学习更新的知识,不断修改自己的认知,针对pymysql以及MySQL数据库的知识做个总结,以纪念我这段时间的学习。 目录 开头 pymysql的使用流程 1.导入pymysql的工具包 方…...

AI时代下的编程趋势:程序员如何提升核心竞争力

随着人工智能和机器学习技术的飞速发展,大型语言模型和AI生成代码(AIGC)工具如ChatGPT、Midjourney、Claude等层出不穷,AI辅助编程逐渐成为现实。在这一变革的浪潮中,程序员群体面临着前所未有的挑战和机遇。一些人担忧…...

C#:基本语法

写在前面 本人在实习过程需要用C#进行开发,但本人之前的技术栈是C方向,所以在菜鸟教程上速通了一下C#的基本语法,总的来说和C还是非常相似的。 1 关键字 using关键字:使用命名空间class:使用类 2 注释 /* 这个程序…...

Redisson 实现分布式锁

文章目录 Redisson 是什么Redisson 使用客户端模式单节点模式哨兵模式主从模式集群模式Spring Boot 整合 Redisson 中的锁Redisson 可重入锁Redisson 公平锁Redisson 联锁Redisson 读写锁Redisson Redlock Redisson 的看门狗机制RedLock 解决单体故障问题如何使用 RedLockMarti…...

VMware ESXi学习笔记

esxi网络模型: 物理网卡: 一般会有多个物理网卡,用于管理口和其他(vsan) 虚拟交换机:创建虚拟交换机时,会要求选择至少1个上行链路(物理网卡) 端口组:一般一个虚拟交换机会创建两个端口组,一个虚机使用&a…...

Python 函数(2)

2、函数 2.1、函数传递列表 将列表传递给函数后,函数就能直接访问其内容。 下列为一个实例:将一个名字列表传递给一个名为greet_users()的函数,这个函数将会向列表中的每一个元素执行相应的信息。 def greet_users(name):for name in name…...

c++文件的读写

平常我们在编完代码后,基本都是从键盘输入,从屏幕输出(显示),但可不可以从其他地方输入输出呢? ………………………………………………………………………………………………………………… 其实可以&…...

春秋云境 | 文件上传 | CVE-2022-30887

目录 靶标介绍 开启靶场 上传一句话木马 蚁剑连接 找到 flag 靶标介绍 多语言药房管理系统 (MPMS) 是用 PHP 和 MySQL 开发的, 该软件的主要目的是在药房和客户之间提供一套接口,客户是该软件的主要用户。该软件有助于为药房业务创建一个综合数据库&#xff0…...

大模型+XDR!打开网络安全攻防演练新范式!

网络安全领域面临着日益复杂的挑战,外部攻击与内部安全威胁交织的双重压力。技术革新成为筑牢安全防线的关键,随着新一代技术的崛起,特别是大数据与人工智能的深度融合,引领着网络安全进入全新阶段。 通过构建网络安全大模型&…...

C语言----字符串

字符串 第一种定义 利用字符数组 双引号的方式定义字符串 char str1[4]"abc"; printf("%s\n",str1); 细节1: 在底层,实际存储的时候,c语言还是会帮我们把字符串"abc"转换成字符数组进行保存,并且在末尾还…...

ThreadLocal 详解(三)内存泄露原因,以及强弱引用

1、ThreadLocal内存泄漏 在Threadlocal的内部静态类中Entry将Threadlocal作为一个key,值作为value保存,他继承WeakReference,super(k),代表了Threadlocal对象是一个弱引用; static class Entry extends WeakReference…...

【Android面试八股文】说一说Android开发模式之MVC、MVP、MVVM的区别?

文章目录 一、 MVC(Model-View-Controller)二、 MVP(Model-View-Presenter)三、MVVM(Model-View-ViewModel)四、示例代码4.1. MVC 示例4.2. MVP 示例4.3. MVVM 示例五、总结在Android开发中, MVC(Model-View-Controller)MVP(Model-View-Presenter)MVVM(Model-View-…...

多叉树的深度优先遍历(以电话号码的字母组合为例)

在我们的座机上,都有这种数字与字母对应的按键。 以此为例,讲解多叉树的深度优先遍历 问题 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同…...

【YashanDB数据库】PHP无法通过ODBC连接到数据库

【问题分类】驱动使用 【关键字】ODBC、驱动使用、PHP 【问题描述】应用使用php-fpmnginx架构,通过php的ODBC拓展连接YashanDB时出现报错: [unixODBC][Driver Manager]Cant open lib /home/yashandb_odbc/libyas_odbc.so: file not found但是在应用所…...

C++ | Leetcode C++题解之第326题3的幂

题目: 题解: class Solution { public:bool isPowerOfThree(int n) {return n > 0 && 1162261467 % n 0;} };...

Ubuntu20.4上搭建FFMPEG开发环境

编译ffmpeg命令如下: 1.安装yasm(ffmpeg里面有汇编语言的部分,所以需要安装一下yasm) wget 5http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar xvzf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure make && make install 2.安装nasm(2.13以上…...

谷粒商城实战笔记-144-性能压测-性能监控-堆内存与垃圾回收

文章目录 一,两种类型的应用1,CPU密集型应用示例:Apache Spark 2,IO密集型应用示例:MySQL 二,监控 我们通过压力测试对接口进行了性能评估,以确定其是否满足性能要求。 如果不符合,就…...

大模型综述

《Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond》论文阅读 模型架构 两种架构: encoder-decoder架构/encoder架构:T5/BERTdecoder架构:GPT4 特点LLMsencoder-decoderorencoder-onlyBERT-style训练:掩码语言模型类型:…...

Python 常用内置函数

目录 1、enumerate函数 1.1、for循环中使用 1.2、enumerate指定索引的起始值 1.3、enumerate在线程中的作用 2、Map 函数 2.1、map()函数可以传多个迭代器对象 3、lambda表达式(匿名函数) 示例 4、sort函数和sorted函数 4.1、sort()函数 4.2、…...

什么是大数据?

1. 大数据定义 大数据到底是什么? 大数据的定义是数据种类更多、数量更多、速度更快。这也被称为三个“V”。 简单来说,大数据是更大、更复杂的数据集,尤其是来自新数据源的数据集。这些数据集非常庞大,传统数据处理软件根本无…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...