当前位置: 首页 > 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:成立就提交事务,不成立就回滚事务。

结尾

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 嵌入式day25
  • SAP与网易大数据系统集成案例
  • C++实现单例模式/工厂模式
  • 质量管理理论(至简)
  • Latex或者word里面mathtype类型的数学公式如何变成mathematica里面的形式
  • 学习笔记--算法(双指针)7
  • 控制反转(IOC)VS 依赖注入(DI)
  • Go 语言常量 6
  • 反射---Java
  • 达梦数据库的系统视图v$sql_stat
  • Element-UI自学实践
  • 【数据库】MySql深度分页SQL查询优化
  • 前端JS总结(下)之DOM
  • LVS原理——详细介绍
  • dos 常用命令整理
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Django 博客开发教程 16 - 统计文章阅读量
  • echarts的各种常用效果展示
  • ES学习笔记(12)--Symbol
  • java第三方包学习之lombok
  • Java小白进阶笔记(3)-初级面向对象
  • jquery ajax学习笔记
  • Mocha测试初探
  • python 装饰器(一)
  • ReactNative开发常用的三方模块
  • SAP云平台里Global Account和Sub Account的关系
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Vue.js源码(2):初探List Rendering
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 对JS继承的一点思考
  • 复习Javascript专题(四):js中的深浅拷贝
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 世界上最简单的无等待算法(getAndIncrement)
  • 无服务器化是企业 IT 架构的未来吗?
  • 一些css基础学习笔记
  • 《码出高效》学习笔记与书中错误记录
  • 阿里云服务器购买完整流程
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • $NOIp2018$劝退记
  • (C11) 泛型表达式
  • (Git) gitignore基础使用
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (分类)KNN算法- 参数调优
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (五)c52学习之旅-静态数码管
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)大型网站架构演变和知识体系
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!