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自定义scrapy中间模块避免重复采集的方法
Apr 07 Python
Python 操作MySQL详解及实例
Apr 30 Python
Python使用Scrapy保存控制台信息到文本解析
Dec 27 Python
浅谈Python黑帽子取代netcat
Feb 10 Python
Python实现正整数分解质因数操作示例
Aug 01 Python
PyTorch基本数据类型(一)
May 22 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
Jun 20 Python
python3.x 生成3维随机数组实例
Nov 28 Python
python json.dumps中文乱码问题解决
Apr 01 Python
Python matplotlib实时画图案例
Apr 23 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
Jun 08 Python
python 实现rolling和apply函数的向下取值操作
Jun 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
用PHP实现的生成静态HTML速度快类库
2007/03/31 PHP
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
非常经典的PHP文件上传类分享
2016/05/15 PHP
phpMyAdmin无法登陆的解决方法
2017/04/27 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
2019/02/16 PHP
prototype Element学习笔记(篇二)
2008/10/26 Javascript
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
用jquery和json从后台获得数据集的代码
2011/11/07 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
jquery遍历table的tr获取td的值实现方法
2016/05/19 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
[02:27]刀塔重生降临
2015/10/14 DOTA
python中随机函数random用法实例
2015/04/30 Python
Python实现简单多线程任务队列
2016/02/27 Python
Python中index()和seek()的用法(详解)
2017/04/27 Python
python opencv 直方图反向投影的方法
2018/02/24 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
纯CSS3发光分享按钮的实现教程
2014/09/06 HTML / CSS
银行门卫岗位职责
2013/12/29 职场文书
职务聘任书范文
2014/03/29 职场文书
2015教师节通讯稿
2015/07/20 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL