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实现Linux下守护进程的编写方法
Aug 22 Python
Python中的元类编程入门指引
Apr 15 Python
使用python实现rsa算法代码
Feb 17 Python
Apache如何部署django项目
May 21 Python
python获取程序执行文件路径的方法(推荐)
Apr 26 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
python利用smtplib实现QQ邮箱发送邮件
May 20 Python
django中模板的html自动转意方法
May 27 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
Aug 23 Python
利用python实现AR教程
Nov 20 Python
基于Python的接口自动化读写excel文件的方法
Jan 15 Python
Python Process创建进程的2种方法详解
Jan 25 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
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
php获取小程序码的实现代码(B类接口)
2020/06/13 PHP
js event事件的传递与冒泡处理
2009/12/06 Javascript
JS 图片缩放效果代码
2010/06/09 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
读jQuery之十三 添加事件和删除事件的核心方法
2011/08/23 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
13个PHP函数超实用
2015/10/21 Javascript
AngularJS 自定义指令详解及示例代码
2016/08/17 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
Vue实现自带的过滤器实例
2017/03/09 Javascript
原生js实现验证码功能
2017/03/16 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
python原始套接字编程示例分享
2014/02/21 Python
Python标准库os.path包、glob包使用实例
2014/11/25 Python
python基础知识小结之集合
2015/11/25 Python
Python 对象中的数据类型
2017/05/13 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
Django如何实现上传图片功能
2019/08/16 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
经济学博士求职自荐信范文
2013/11/23 职场文书
2014年会计工作总结
2014/11/27 职场文书
小学教师党员承诺书
2015/04/27 职场文书
《巨人的花园》教学反思
2016/02/19 职场文书
python process模块的使用简介
2021/05/14 Python
python读取mnist数据集方法案例详解
2021/09/04 Python