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使用新浪微博api上传图片到微博示例
Jan 10 Python
python实现文件分组复制到不同目录的例子
Jun 04 Python
Python引用传值概念与用法实例小结
Oct 07 Python
用Python一键搭建Http服务器的方法
Jun 01 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
Feb 21 Python
Python 数据可视化pyecharts的使用详解
Jun 26 Python
Python中的正则表达式与JSON数据交换格式
Jul 03 Python
Python 绘制酷炫的三维图步骤详解
Jul 12 Python
浅析Python模块之间的相互引用问题
Feb 26 Python
python实现简单石头剪刀布游戏
Oct 24 Python
Python requests用法和django后台处理详解
Mar 19 Python
python单向链表实例详解
May 25 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 foreach 参数强制类型转换的问题
2010/12/10 PHP
php下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
2012/02/04 PHP
php 修改、增加xml结点属性的实现代码
2013/10/22 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
php提取微信账单的有效信息
2018/10/01 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
setTimeout()与setInterval()方法区别介绍
2013/12/24 Javascript
用原生js做个简单的滑动效果的回到顶部
2014/10/15 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
javascript验证身份证号
2015/03/03 Javascript
jQuery添加options点击事件并传值实例代码
2016/05/18 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
layui分页效果实现代码
2017/05/19 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Django开发中复选框用法示例
2018/03/20 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
python实现简单图片物体标注工具
2019/03/18 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
《生命 生命》教学反思
2014/04/19 职场文书
优秀员工评优方案
2014/06/13 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
2015年售后服务工作总结
2015/04/25 职场文书