python 3.6 +pyMysql 操作mysql数据库(实例讲解)


Posted in Python onDecember 20, 2017

版本信息:python:3.6

mysql:5.7

pyMysql:0.7.11

################################################################# 
#author: 陈月白 
#_blogs: http://www.cnblogs.com/chenyuebai/ 
################################################################# 
# -*- coding: utf-8 -*-
class MysqlTools():
 """
 连接mysql
 库、表操作
 """
 def __init__(self,host,dbname,user,passwd,charset="utf8"):
 self.host = host
 self.dbname = dbname
 self.user = user
 self.passwd = passwd
 self.charset = charset

 def connectMysqlDatabase(self):
 """连接db"""
 try:
  #连接db
  connect = pymysql.connect(host=self.host,user=self.user,passwd=self.passwd,db=self.dbname,charset=self.charset)
  cursor = connect.cursor()
  databaseConnectInfo = self.user + "@" + "self.host" + "/" + self.dbname
  print("INFO:connect database %s success."%databaseConnectInfo)
  return connect,cursor
 except:
  traceback.print_exc()
  print("ERROR:FUNCTION connectMysqlDatabase connect mysql database failed.")

 def executeSqlLine(self,sqlLine):
 """执行单条sql语句"""
 if sqlLine and isinstance(sqlLine,str):
  print("INFO:now start connect mysql dababase.")
  connect,cursor = self.connectMysqlDatabase()
  executeResult = ""
  try:
  #游标执行sql
  cursor.execute(sqlLine)
  executeResult = cursor.fetchall() #获取所有执行结果
  cursor.close()    #关闭游标
  connect.commit()   #确认提交
  print("INFO:execute sql sucess. sqlLine = ", sqlLine)
  except Exception as e:
  print("ERROR:execute sql failed.errorInfo =",e)
  print("ERROR:FUNCTION executeSql execute failed.sqlLine =",sqlLine)
  connect.rollback()   #回滚db
  return str(e) + " sqlLine = " + sqlLine
  #断开连接
  connect.close()
  print("INFO:connect closed.\n")
  return executeResult
 else:
  print("ERROR:param sqlLine is empty or type is not str.sqlLine = ",sqlLine)

 def executeBatchSql(self,sqlList):
 """
 批量执行sql
 exp: executeBatchSql([sql_1,
    sql_2,
    sql_3,
    ......
    ])
 """
 finalResultList = []
 if sqlList:
  for sql in sqlList:
  executeResult = self.executeSqlLine(sql)
  finalResultList.append(executeResult)
 else:
  print("ERROR:param sqlList is empty.")
 return finalResultList

测试代码:

# -*- coding: utf-8 -*-
from my_code.work_tools import WorkTools
mysql = WorkTools.MysqlTools("localhost","testdbname","rootuername","passwd")
#执行单行sql
ret1 = mysql.executeSqlLine("show databases")
#批量执行
ret2 = mysql.executeBatchSql([
       "show databases",
       "show tables",
       "update students_info set name = '王大花D' where id = 2",
       "select * from students_info",
       "error sql test"#异常sql测试
        ])
print("ret1 = ",ret1)
print("---------------------")
for i in ret2:
 print(i)

测试表:

python 3.6 +pyMysql 操作mysql数据库(实例讲解)

执行结果:

ret1 = (('information_schema',), ('mysql',), ('performance_schema',), ('sakila',), ('sys',), ('testdb',), ('world',))
---------------------
(('information_schema',), ('mysql',), ('performance_schema',), ('sakila',), ('sys',), ('testdb',), ('world',))
(('students_info',),)
()
((1, '陈月白', 'male', 25, '20176666', '1351234'), (2, '王大花D', 'female', 19, '19920816', '10086'), (3, '李强新', 'male', 18, '19941025', '10000'), (4, '王鹏', 'male', 20, '19970405', '10010'), (5, '钟齐', 'male', 22, '19970420', '123456789'), (6, '王大花', 'female', 15, '19981024', '12345678'))
(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'error sql test' at line 1") sqlLine = error sql test

以上这篇python 3.6 +pyMysql 操作mysql数据库(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python不换行之end=与逗号的意思及用途
Nov 21 Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 Python
pyhton列表转换为数组的实例
Apr 04 Python
Python Unittest自动化单元测试框架详解
Apr 04 Python
Python实现求一个集合所有子集的示例
May 04 Python
Python函数any()和all()的用法及区别介绍
Sep 14 Python
python自动化工具之pywinauto实例详解
Aug 26 Python
Python参数传递及收集机制原理解析
Jun 05 Python
浅谈pandas dataframe对除数是零的处理
Jul 20 Python
在 Python 中使用 7zip 备份文件的操作
Dec 11 Python
python UIAutomator2使用超详细教程
Feb 19 Python
Django展示可视化图表的多种方式
Apr 08 Python
python实现ID3决策树算法
Dec 20 #Python
理解python中生成器用法
Dec 20 #Python
Python利用turtle库绘制彩虹代码示例
Dec 20 #Python
浅谈Python中range和xrange的区别
Dec 20 #Python
python机器学习实战之树回归详解
Dec 20 #Python
使用python 和 lint 删除项目无用资源的方法
Dec 20 #Python
python机器学习实战之K均值聚类
Dec 20 #Python
You might like
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
smarty简单应用实例
2015/11/03 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
JavaScript运行时库属性一览表
2014/03/14 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
vxe-table vue table 表格组件功能
2019/05/26 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
python实现维吉尼亚加密法
2019/03/20 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
执行Python程序时模块报错问题
2020/03/26 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
python用tkinter实现一个gui的翻译工具
2020/10/26 Python
39美元购买一副眼镜或太阳镜:39DollarGlasses.com
2018/06/17 全球购物
玩具公司的创业计划书
2013/12/31 职场文书
端午节活动策划方案
2014/03/09 职场文书
教师个人考察材料
2014/12/16 职场文书
介绍信样本
2015/01/31 职场文书
违纪学生保证书
2015/02/27 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
Python可视化学习之seaborn调色盘
2022/02/24 Python