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获取文件后缀名及批量更新目录下文件后缀名的方法
Nov 11 Python
Python的collections模块中namedtuple结构使用示例
Jul 07 Python
python fabric实现远程部署
Jan 05 Python
Django框架验证码用法实例分析
May 10 Python
python实现最大子序和(分治+动态规划)
Jul 05 Python
设置jupyter中DataFrame的显示限制方式
Apr 12 Python
详解Python中Pyyaml模块的使用
Oct 08 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
Oct 22 Python
python遍历路径破解表单的示例
Nov 21 Python
python解包概念及实例
Feb 17 Python
关于python中readlines函数的参数hint的相关知识总结
Jun 24 Python
python中的3种定义类方法
Nov 27 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
Zend Framework页面缓存实例
2014/06/25 PHP
laravel 框架执行流程与原理简单分析
2020/02/01 PHP
javascript数组输出的两种方式
2015/01/13 Javascript
JavaScript处理解析JSON数据过程详解
2015/09/11 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
2016/06/25 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
Vue.js中数组变动的检测详解
2016/10/12 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
简单的Vue异步组件实例Demo
2017/12/27 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
2018/01/04 Javascript
node 命令方式启动修改端口的方法
2018/05/12 Javascript
详解JS预解析原理
2020/06/16 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
python实现字符串中字符分类及个数统计
2018/09/28 Python
微信小程序python用户认证的实现
2019/07/29 Python
python pyqtgraph 保存图片到本地的实例
2020/03/14 Python
python实时监控logstash日志代码
2020/04/27 Python
python如何操作mysql
2020/08/17 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
会计专业毕业生求职信分享
2014/01/03 职场文书
自立自强的名人事例
2014/02/10 职场文书
有兼职工作经历的简历自我评价
2014/03/07 职场文书
责任胜于能力演讲稿
2014/05/20 职场文书
2014年度考核工作总结
2014/12/24 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
MySQL分区表实现按月份归类
2021/11/01 MySQL
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP