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定时执行之Timer用法示例
May 27 Python
Windows下安装python2和python3多版本教程
Mar 30 Python
python利用标准库如何获取本地IP示例详解
Nov 01 Python
详解关于Django中ORM数据库迁移的配置
Oct 08 Python
对python 合并 累加两个dict的实例详解
Jan 21 Python
Python3 列表,数组,矩阵的相互转换的方法示例
Aug 05 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
Aug 23 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
Sep 11 Python
python面向对象之类属性和类方法案例分析
Dec 30 Python
Python流程控制常用工具详解
Feb 24 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
May 30 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写UltraEdit插件脚本实现方法
2011/12/26 PHP
PHP类的反射用法实例
2014/11/03 PHP
php微信公众平台开发之获取用户基本信息
2015/08/17 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
XmlUtils JS操作XML工具类
2009/10/01 Javascript
JS实现遮罩层效果的简单实例
2013/11/12 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
深入理解Python装饰器
2016/07/27 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
2020/04/09 Python
python如何提升爬虫效率
2020/09/27 Python
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
物流业务员岗位职责
2014/02/08 职场文书
出纳试用期自我鉴定
2014/04/07 职场文书
2015年小学生新年寄语
2014/12/08 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
python 详解turtle画爱心代码
2022/02/15 Python