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求算数平方根和约数的方法汇总
Mar 09 Python
Python自动化运维之IP地址处理模块详解
Dec 10 Python
Python3多线程爬虫实例讲解代码
Jan 05 Python
Python后台管理员管理前台会员信息的讲解
Jan 28 Python
Django错误:TypeError at / 'bool' object is not callable解决
Aug 16 Python
python实现全排列代码(回溯、深度优先搜索)
Feb 26 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
Apr 15 Python
Python实现Keras搭建神经网络训练分类模型教程
Jun 12 Python
Django如何实现密码错误报错提醒
Sep 04 Python
Django websocket原理及功能实现代码
Nov 14 Python
7个关于Python的经典基础案例
Nov 07 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下escape解码函数的实现方法
2010/08/08 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
2015/11/10 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
详解Angular.js的$q.defer()服务异步处理
2016/11/06 Javascript
详解vue-router 路由元信息
2017/09/13 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
JS将网址url转化为JSON格式的方法
2018/07/02 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
java遇到微信小程序 "支付验证签名失败" 问题解决
2019/12/22 Javascript
在Django中创建第一个静态视图
2015/07/15 Python
python实现AES和RSA加解密的方法
2019/03/28 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
2019/08/13 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
HTML5实现预览本地图片
2016/02/17 HTML / CSS
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
珍珠鸟教学反思
2014/02/01 职场文书
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
房屋买卖协议书范本
2014/04/10 职场文书
英语教研活动总结
2014/07/02 职场文书
销售人员求职信
2014/07/22 职场文书
镇创先争优活动总结
2014/08/28 职场文书
六查六看自查报告
2014/10/14 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
《山中访友》教学反思
2016/02/24 职场文书
浅谈JavaScript作用域
2021/12/06 Javascript
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers