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的汉字转GBK码实现代码
Feb 19 Python
pycharm 使用心得(五)断点调试
Jun 06 Python
python实现无证书加密解密实例
Oct 27 Python
python3简单实现微信爬虫
Apr 09 Python
改进Django中的表单的简单方法
Jul 17 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 Python
解决pycharm界面不能显示中文的问题
May 23 Python
python实现石头剪刀布程序
Jan 20 Python
在django中图片上传的格式校验及大小方法
Jul 28 Python
解决django的template中如果无法引用MEDIA_URL问题
Apr 07 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
Sep 01 Python
python打包多类型文件的操作方法
Sep 21 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 301转向实现代码
2008/09/18 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
利用php输出不同的心形图案
2016/04/22 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
原生js实现模拟滚动条
2015/06/15 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
jQuery实现动态删除LI的方法
2017/05/30 jQuery
基于jQuery封装的分页组件
2017/06/26 jQuery
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
从零学python系列之从文件读取和保存数据
2014/05/23 Python
实例讲解python函数式编程
2014/06/09 Python
Python常用的日期时间处理方法示例
2015/02/08 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
Pandas实现DataFrame按行求百分数(比例数)
2019/12/27 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
如何用Python进行时间序列分解和预测
2021/03/01 Python
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
临床医学系毕业生推荐信
2013/11/09 职场文书
写给女生的道歉信
2014/01/14 职场文书
小学运动会表扬稿
2014/01/19 职场文书
警示教育活动总结
2014/05/05 职场文书
水电维修专业推荐信
2014/09/06 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
关爱空巢老人感想
2015/08/11 职场文书
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏