Python 解析pymysql模块操作数据库的方法


Posted in Python onFebruary 18, 2020

pymysql 是 python 用来操作MySQL的第三方库,下面具体介绍和使用该库的基本方法。

1.建立数据库连接

通过 connect 函数中 parameter 参数 建立连接,连接成功返回Connection对象

import pymysql

#建立数据库连接
connection = pymysql.connect(host = 'localhost',
        user = 'root',
        password = '123456',
        database = 'mydb',
        charset = 'utf8'
)
#print(connection)

pymysql.connect()函数中常用的连接参数有以下几种:

  • host:数据库主机名或者ip地址
  • port:端口号
  • user:数据库的账号
  • password 或 passwd:数据库的密码
  • database 或 db:数据库的名字
  • charset:编码方式

Connection对象的重要方法:

  • close() 关闭数据库连接
  • commit() 提交数据库事物
  • rollback() 回滚数据库事务
  • cursor() 获得 Cursor游标对象

2.创建游标

一个Cursor游标对象,暂时保存了SQL操作所影响到的数据,相同的数据库连接创建的游标所引起的数据变化,会马上反应到同一连接中的其它游标对象。但是不同数据库连接中的游标对象,是否能及时反映出来,则与数据库事物管理有关。

Cursor对象基本方法和属性:

execute(operation,[parameters])

执行一条SQL语句,operation时SQL语句,parameters是其参数。返回值是整数,表示执行SQL语句影响的行数

executemany(operation,[parameters])

批量执行SQL语句

callproc(procname,[parameters])

执行存储过程,procname是存储过程名

使用execute()和executemany()方法查询后,通过以下提取方法提取结果集

fetchone()

从结果集当中返回一条记录的序列,无则返回None

fetchmany([size=cursor.arraysize])

从结果集当中返回小于或等于size的记录序列,无则返回空序列,size默认是整个游标的行数

fetchall()

从结果集当中返回所有的行数

3.建立数据库(这里我使用的是NaviCat)

创建一个名为pydb的数据库,表名为user,字段name和userid

Python 解析pymysql模块操作数据库的方法

Python 解析pymysql模块操作数据库的方法

数据的查找

#建立数据库连接
connection = pymysql.connect(host = 'localhost',
        user = 'root',
        password = '123456',
        database = 'mydb',
        charset = 'utf8'
)
#print(connection)
try:
 #创建游标对象
 with connection.cursor() as cursor:
  #执行SQL操作
  sql = 'select name, userid from user where userid >%(id)s'
  cursor.execute(sql, {'id':0})
  #提取数据集
  result_set = cursor.fetchall()
  for row in result_set:
   print('id:{0} - name:{1}'.format(row[1],row[0]))
  #游标自动关闭
finally:
 #关闭连接
 connection.close()

数据插入

#数据增加
connection = pymysql.connect(host = 'localhost',
        user = 'root',
        password = '123456',
        database = 'mydb',
        charset = 'utf8'
)
try:
 with connection.cursor() as cursor:
  sql = 'insert into user (userid,name) values (%s,%s)'
  cursor.execute(sql,(3,'cc'))
  #affectcount = cursor.execute(sql,(3,'cc'))
  #print('影响的数据行数:{0}'.format(affectcount))
  #提交数据库事务
  connection.commit()
except pymysql.DatabaseError:
 #数据库事务回滚
 connection.rollback()
finally:
 connection.close()

执行结果:

Python 解析pymysql模块操作数据库的方法

数据更新

#数据更新
connection = pymysql.connect(host = 'localhost',
        user = 'root',
        password = '123456',
        database = 'mydb',
        charset = 'utf8'
)
#print(connection)
try:
 with connection.cursor() as cursor:
  sql = 'update user set name = %s where userid > %s'
  cursor.execute(sql,('Tom',2))
  #提交事务
  connection.commit()
  print('更新成功')
except pymysql.DatabaseError as e:
 connection.rollback()
 print(e)
finally:
 connection.close()

执行结果:

Python 解析pymysql模块操作数据库的方法

数据删除

#数据删除
connection = pymysql.connect(host = 'localhost',
        user = 'root',
        password = '123456',
        database = 'mydb',
        charset = 'utf8'
        )
try:
 with connection.cursor() as cursor:
  sql = 'delete from user where userid = %s'
  cursor.execute(sql,(1))
  #提交事务
  connection.commit()
  print("删除成功")
except pymysql.DatabaseError as e:
 connection.rollback()
 print(e)
finally:
 connection.close()

执行结果:

Python 解析pymysql模块操作数据库的方法

总的来说和java进行对比,在数据库的连接 和对

数据集进行的处理上,python体现的非常简洁,最主要易于使用和理解。人生苦短,我用python!

总结

以上所述是小编给大家介绍的Python 解析pymysql模块操作数据库的方法,希望对大家有所帮助!

Python 相关文章推荐
总结Python编程中函数的使用要点
Mar 20 Python
简单的python协同过滤程序实例代码
Jan 31 Python
浅析Python函数式编程
Oct 06 Python
python 判断参数为Nonetype类型或空的实例
Oct 30 Python
Python3.5常见内置方法参数用法实例详解
Apr 29 Python
Python数据类型之Dict字典实例详解
May 07 Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
Nov 21 Python
pytorch SENet实现案例
Jun 24 Python
Python自动化xpath实现自动抢票抢货
Sep 19 Python
使用Django的JsonResponse返回数据的实现
Jan 15 Python
Python实现视频自动打码的示例代码
Apr 08 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 #Python
python_array[0][0]与array[0,0]的区别详解
Feb 18 #Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 #Python
Python如何实现小程序 无限求和平均
Feb 18 #Python
python_mask_array的用法
Feb 18 #Python
基于python3生成标签云代码解析
Feb 18 #Python
基于Pytorch SSD模型分析
Feb 18 #Python
You might like
How do I change MySQL timezone?
2008/03/26 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
PHP实现的策略模式示例
2019/03/20 PHP
摘自启点的main.js
2008/04/20 Javascript
动态样式类封装JS代码
2009/09/02 Javascript
Jquery插件写法笔记整理
2012/09/06 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
Node.js的文件权限及读写flag详解
2016/10/11 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
Angular4开发解决跨域问题详解
2017/08/28 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
微信小程序常用的3种提示弹窗实现详解
2019/09/19 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
2020/03/09 Javascript
Python实现的RSS阅读器实例
2015/07/25 Python
Python实现的建造者模式示例
2018/08/06 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
对Pytorch中Tensor的各种池化操作解析
2020/01/03 Python
Python matplotlib画曲线例题解析
2020/02/07 Python
python中如何进行连乘计算
2020/05/28 Python
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
摩托车和ATV零件、配件和服装的首选在线零售商:MotoSport
2017/12/22 全球购物
美国最大的半成品净菜电商:Blue Apron(蓝围裙)
2018/04/27 全球购物
入党推优材料
2014/06/02 职场文书
2014教师“四风问题”对照检查材料思想汇报
2014/09/16 职场文书
世界红十字日活动总结
2015/02/10 职场文书
结婚当天新郎保证书
2015/05/08 职场文书
微信小程序调用python模型
2022/04/21 Python
Spring Cloud OAuth2实现自定义token返回格式
2022/06/25 Java/Android