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 相关文章推荐
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
Oct 01 Python
python3结合openpyxl库实现excel操作的实例代码
Sep 11 Python
linux安装Python3.4.2的操作方法
Sep 28 Python
Python/ArcPy遍历指定目录中的MDB文件方法
Oct 27 Python
python 寻找离散序列极值点的方法
Jul 10 Python
简单了解django缓存方式及配置
Jul 19 Python
python 实现矩阵填充0的例子
Nov 29 Python
Python ORM编程基础示例
Feb 02 Python
django 实现手动存储文件到model的FileField
Mar 30 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 Python
django restframework serializer 增加自定义字段操作
Jul 15 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 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
提问的智慧(2)
2006/10/09 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
thinkPHP实现的联动菜单功能详解
2017/05/05 PHP
PHP实现一维数组与二维数组去重功能示例
2018/05/24 PHP
jQuery学习笔记之Helloworld
2010/12/22 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
了解Javascript的模块化开发
2015/03/02 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
2015/09/01 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
小程序转发探索示例
2019/02/19 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
Python中装饰器高级用法详解
2017/12/25 Python
Python图片的横坐标汉字实例
2019/12/04 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
Python的in,is和id函数代码实例
2020/04/18 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
英国航空官网:British Airways
2016/09/11 全球购物
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
给幼儿园老师的表扬信
2014/01/19 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
经典团队口号大全
2014/06/21 职场文书
英语邀请函范文
2015/02/02 职场文书
趵突泉导游词
2015/02/03 职场文书
储备店长岗位职责
2015/04/14 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
30岁前绝不能错过的10本书
2019/08/08 职场文书
教你怎么用Python监控愉客行车程
2021/04/29 Python