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-ElasticSearch搜索查询的讲解
Feb 25 Python
Numpy数组array和矩阵matrix转换方法
Aug 05 Python
python读取Excel表格文件的方法
Sep 02 Python
解决pandas展示数据输出时列名不能对齐的问题
Nov 18 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 Python
在pytorch中实现只让指定变量向后传播梯度
Feb 29 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
Mar 07 Python
Django media static外部访问Django中的图片设置教程
Apr 07 Python
解决TensorFlow程序无限制占用GPU的方法
Jun 30 Python
Python创建临时文件和文件夹
Aug 05 Python
Python实现文件压缩和解压的示例代码
Aug 12 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
Sep 15 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录入页面中动态从数据库中提取数据的实现
2006/10/09 PHP
php设计模式 Interpreter(解释器模式)
2011/06/26 PHP
php实现的任意进制互转类分享
2015/07/07 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
PHP 5.6.11中CURL模块问题的解决方法
2016/08/08 PHP
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
7个JS基础知识总结
2014/03/05 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
给before和after伪元素设置js效果的方法
2015/12/04 Javascript
基于javascript实现页面加载loading效果
2020/09/15 Javascript
Bootstrap网格系统详解
2016/04/26 Javascript
jQuery实现微信长按识别二维码功能
2016/08/26 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
js实现图片左右滚动效果
2017/02/27 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
使用mint-ui开发项目的一些心得(分享)
2017/09/07 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
Python多进程原理与用法分析
2018/08/21 Python
django连接oracle时setting 配置方法
2019/08/29 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
将keras的h5模型转换为tensorflow的pb模型操作
2020/05/25 Python
Python存储读取HDF5文件代码解析
2020/11/25 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
公交公司毕业生求职信
2014/02/15 职场文书
2014年迎新年联欢会活动策划方案
2014/02/26 职场文书
法律六进活动方案
2014/03/13 职场文书
副董事长岗位职责
2014/04/02 职场文书
关于感恩的演讲稿200字
2014/08/26 职场文书
城管执法人员个人对照检查材料思想汇报
2014/09/29 职场文书
JavaScript中关于预编译、作用域链和闭包的理解
2021/03/31 Javascript
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript