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 import自定义模块方法
Feb 12 Python
举例讲解Python中的迭代器、生成器与列表解析用法
Mar 20 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
Jun 23 Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 Python
使用tensorflow实现线性回归
Sep 08 Python
对python GUI实现完美进度条的示例详解
Dec 13 Python
PYQT5设置textEdit自动滚屏的方法
Jun 14 Python
python实现截取屏幕保存文件,删除N天前截图的例子
Aug 27 Python
Python可变对象与不可变对象原理解析
Feb 25 Python
python Canny边缘检测算法的实现
Apr 24 Python
Python requests接口测试实现代码
Sep 08 Python
看看如何用Python绘制小米新版天价logo
Apr 20 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中函数rand和mt_rand的区别比较
2012/12/26 PHP
从wamp到xampp的升级之路
2015/04/08 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
2019/10/10 PHP
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
javascript 内存回收机制理解
2011/01/17 Javascript
基于jquery实现的定时显示与隐藏div广告的实现代码
2013/08/22 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
简述JavaScript中正则表达式的使用方法
2015/06/15 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
2016/01/12 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
详解react如何在组件中获取路由参数
2017/06/15 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
跟老齐学Python之for循环语句
2014/10/02 Python
使用PDB简单调试Python程序简明指南
2015/04/25 Python
Python中私有属性的定义方式
2020/03/05 Python
Python自定义聚合函数merge与transform区别详解
2020/05/26 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
高级技校毕业生自荐信
2013/11/18 职场文书
《特殊的葬礼》教学反思
2014/04/27 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
爱国教育主题班会
2015/08/14 职场文书
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技