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 相关文章推荐
Python3实现的腾讯微博自动发帖小工具
Nov 11 Python
python抓取豆瓣图片并自动保存示例学习
Jan 10 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
Jun 27 Python
Python+树莓派+YOLO打造一款人工智能照相机
Jan 02 Python
Python遍历numpy数组的实例
Apr 04 Python
对python3 urllib包与http包的使用详解
May 10 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
python创建学生成绩管理系统
Nov 22 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
Feb 25 Python
Python yield生成器和return对比代码实例
Apr 20 Python
Django中Q查询及Q()对象 F查询及F()对象用法
Jul 09 Python
如何利用pygame实现打飞机小游戏
May 30 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
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
检测png图片是否完整的php代码
2010/09/06 PHP
php设计模式 Observer(观察者模式)
2011/06/26 PHP
php异步多线程swoole用法实例
2014/11/14 PHP
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
简单实例处理url特殊符号&处理(2种方法)
2013/04/02 Javascript
深入理解JS中的变量及作用域、undefined与null
2014/03/04 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
详解VUE项目中安装和使用vant组件
2019/04/28 Javascript
Nodejs异步流程框架async的方法
2019/06/07 NodeJs
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
2021/01/25 Javascript
[48:23]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第一局
2016/03/05 DOTA
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
python json.loads兼容单引号数据的方法
2018/12/19 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
HTML5 audio标签使用js进行播放控制实例
2015/04/24 HTML / CSS
房地产销售经理岗位职责
2014/01/01 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书
庆七一活动总结
2014/08/27 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
创业计划书之烤红薯
2019/09/26 职场文书
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript