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基础教程之python消息摘要算法使用示例
Feb 10 Python
Flask入门教程实例:搭建一个静态博客
Mar 27 Python
详解用TensorFlow实现逻辑回归算法
May 02 Python
python如何爬取个性签名
Jun 19 Python
python 常见字符串与函数的用法详解
Nov 23 Python
对web.py设置favicon.ico的方法详解
Dec 04 Python
Python开启线程,在函数中开线程的实例
Feb 22 Python
解决Django后台ManyToManyField显示成Object的问题
Aug 09 Python
python 调用Google翻译接口的方法
Dec 09 Python
python 自动刷新网页的两种方法
Apr 20 Python
Python还能这么玩之用Python修改了班花的开机密码
Jun 04 Python
python之基数排序的实现
Jul 26 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 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
使用php记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
Laravel框架用户登陆身份验证实现方法详解
2017/09/14 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
2016/01/28 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
2017/11/08 jQuery
Vue插槽原理与用法详解
2019/03/05 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
[01:44]Ti10举办地公布
2019/08/25 DOTA
Python的Django框架使用入门指引
2015/04/15 Python
详解Python的collections模块中的deque双端队列结构
2016/07/07 Python
深入理解python中sort()与sorted()的区别
2018/08/29 Python
Python File(文件) 方法整理
2019/02/18 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
详解Python3之数据指纹MD5校验与对比
2019/06/11 Python
python字典key不能是可以是啥类型
2020/08/04 Python
python如何随机生成高强度密码
2020/08/19 Python
python中pyqtgraph知识点总结
2021/01/26 Python
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
巧克力蛋糕店创业计划书
2014/01/14 职场文书
九年级家长会邀请函
2014/01/15 职场文书
给国外客户的邀请函
2014/01/30 职场文书
《和我们一样享受春天》教学反思
2014/02/07 职场文书
日化店促销方案
2014/03/26 职场文书
五年级学生评语大全
2014/12/26 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
2015毕业设计工作总结
2015/07/24 职场文书
学校就业保障协议书
2019/06/24 职场文书