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 相关文章推荐
django实现分页的方法
May 26 Python
Python的pycurl包用法简介
Nov 13 Python
深入理解NumPy简明教程---数组1
Dec 17 Python
Python自动生产表情包
Mar 17 Python
python实现数据写入excel表格
Mar 25 Python
python3学习之Splash的安装与实例教程
Jul 09 Python
python读取并写入mat文件的方法
Jul 12 Python
django框架面向对象ORM模型继承用法实例分析
Jul 29 Python
Python Numpy中数据的常用保存与读取方法
Apr 01 Python
python中有帮助函数吗
Jun 19 Python
Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤
Mar 29 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 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类分享
2014/02/07 PHP
php自动更新版权信息显示的方法
2015/06/19 PHP
yii2使用gridView实现下拉列表筛选数据
2017/04/10 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
JavaScript—window对象使用示例
2013/12/09 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
javascript中的正则表达式使用详解
2015/08/30 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
原生js调用json方法总结
2018/02/22 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
python2.7的编码问题与解决方法
2016/10/04 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
2018/04/22 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
Python flask框架实现查询数据库并显示数据
2020/06/04 Python
Python使用xpath实现图片爬取
2020/09/16 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
Python中生成ndarray实例讲解
2021/02/22 Python
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
adidas泰国官网:adidas TH
2020/07/11 全球购物
高级Java程序员面试题
2016/06/23 面试题
房地产销售员的自我评价分享
2013/12/04 职场文书
装饰活动策划方案
2014/02/11 职场文书
七一活动主持词
2015/06/29 职场文书
分家协议书范本
2016/03/22 职场文书