python关于mysql的API--pymysql模块

pymsql是Python中操作MySQL的模块,其使用方法和py2的MySQLdb几乎相同。

模块安装

pip install pymysql

执行sql语句

#导入pymysql模块
import pymysql # 连接数据库
connect = pymysql.connect(host = '10.135.30.141',port = 3306,user = 'root',passwd = 'root@123',db = 'test',charset = 'utf8')
# 定义游标
cursor = connect.cursor()
#更改获取数据结果的数据类型,默认是元组,可以改为字典等:
# cursor = connect.cursor(cursor=pymysql.cursors.DictCursor)
# 执行SQL,count 是执行sql影响的行数
count = cursor.execute("select * from t1")
# 返回1条
#cursor.fetchone()
# 返回多条
# cursor.fetchmany()
# 返回所有行数
results = cursor.fetchall()
print(results)
#scroll移动光标
#cursor.scroll(-1,mode='relative') # 相对当前位置移动
#cursor.scroll(2,mode='absolute') # 相对绝对位置移动 # 提交sql
connect.commit()
# 关闭游标
cursor.close()
#关闭连接
connect.close()

导出数据到excel表格

# __Desc__ = 从数据库中导出数据到excel数据表中
# __author__ yuxiaohao import pymysql
from openpyxl import Workbook
from openpyxl.writer.excel import ExcelWriter
from openpyxl.cell.cell import get_column_letter
import datetime,time,logging # 开始日期
if datetime.date.today().month - 1 == 0:
start_date = datetime.date(datetime.date.today().year -1,datetime.date.today().month - 1 or 12,1)
else:
start_date = datetime.date(datetime.date.today().year, datetime.date.today().month - 1, 1)
# 结束日期
stop_date = datetime.date(datetime.date.today().year,datetime.date.today().month ,1)
# 当天日期
Today = time.strftime('%Y-%m-%d')
# 表格输出路径
DirName = 'E:/'
# 表格名字
FileName = '%sshop-invoices-exp-%s.xlsx' % (DirName, Today) # 需要执行的SQL
SQL="" # SQL转换成小写
SQL=SQL.lower() # 定义日志
logging.basicConfig(filename='%saccess.log' %DirName,
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
level=10) class MYSQL:
def __init__(self):
pass def __del__(self):
self._connect.commit()
self._cursor.close()
self._connect.close() def connectDB(self):
"""
连接数据库
:return:
"""
try:
self._connect = pymysql.Connect(
host='',
port=3306,
user='',
passwd='',
db='',
charset='utf8'
) return 0
except:
return -1 def export(self, table_name, output_path):
self._cursor = self._connect.cursor()
count = self._cursor.execute(SQL)
logging.info('返回%s行数据' %count)
# 搜取所有结果
results = self._cursor.fetchall()
# 获取字段名
fields_complex = self._cursor.description
# 字段名加入li 列表中
fields = []
for i in range(len(fields_complex)):
fields.append(fields_complex[i][0])
# 创建表格
wb = Workbook()
ws = wb.active
ws = wb.worksheets[0]
# 字段名添加到表格
ws.append(fields)
# 数据添加到表格
for ret in results:
ws.append(ret)
#保存
wb.save(output_path) if __name__ == '__main__':
mysql = MYSQL()
flag = mysql.connectDB()
if flag == -1:
logging.info('数据库连接失败')
else:
logging.info('数据库连接成功')
mysql.export('t1', '%s' % FileName)
mysql.__del__()
if FileName:
logging.info('数据导出成功!')
else:
logging.info('数据导出失败!')

Python3 操作mysql数据库的更多相关文章

  1. python3操作MySQL数据库

    安装PyMySQL 下载地址:https://pypi.python.org/pypi/PyMySQL 1.把操作Mysql数据库封装成类,数据库和表先建好 import pymysql.cursor ...

  2. (接口自动化)Python3操作MySQL数据库

    基础语法: import pymysql #导入模块 conn = pymysql.connect(host='localhost',user='root', passwd='123456', db= ...

  3. python3操作mysql数据库增删改查

    #!/usr/bin/python3 import pymysql import types db=pymysql.connect("localhost","root&q ...

  4. python3操作mysql数据库表01(基本操作)

    #!/usr/bin/env python# -*- coding:UTF-8 -*- import requestsfrom bs4 import BeautifulSoupfrom bs4 imp ...

  5. python3操作MySQL数据库,一次插入多条记录的方法

    这里提供一个思路,使用字符串拼接的方法,将sql语句拼接出来,然后去执行: l = ["] s = '-' print(s.join(l))

  6. python3操作mysql数据库表01(封装查询单条、多条数据)

    #!/usr/bin/env python# -*- coding:UTF-8 -*- import pymysql# import os'''封装查询单条.多条数据'''# os.environ[' ...

  7. python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy

    内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...

  8. python3操作mysql教程

    一.下载\安装\配置 1. python3 Python3下载网址:http://www.python.org/getit/ 当前最新版本是python3.2,下载地址是 http://www.pyt ...

  9. python接口自动化(三十八)-python操作mysql数据库(详解)

    简介 现在的招聘要求对QA人员的要求越来越高,测试的一些基础知识就不必说了,来说测试知识以外的,会不会一门或者多门开发与语言,能不能读懂代码,会不会Linux,会不会搭建测试系统,会不会常用的数据库, ...

随机推荐

  1. cocos2dx[3.2](6) 节点类Node

    与2.x相比,节点类Node的属性和功能做了大幅度的修改与增加. Node类是绝大部分类的父类(并不是所有的类,例如Director类是直接继承Ref类的),如Scene.Layer.Sprite以及 ...

  2. Altera DDR2 IP核学习总结2-----------DDR2 IP核的生成

    打开IP核工具,然后选择Verilog HDL选项,填写路径,写入文件名DDR2_IP.V,点击next PLL reference clock frequency填入板子晶振的频率50MHZ,这里设 ...

  3. python基础之字符串索引与切片

    字符串索引与切片:切片后组成新字符串与原字符串无关系增:str1+str2查:str1[index] str1[start_index:end_index]1,索引从0开始2,根据索引获取元素:索引超 ...

  4. CF-Div.3-B. Minimize the Permutation【模拟·需要清醒的脑子】

    题目传送门 根据字典序,是个人都会想到依次把目前最小的数尽量往前面移动,直到它不能再往前移动,或者已经到了它的期望位置(就是排列的那个位置 比如$i$就应该在位置$i$)为止. 所以我刚开始是这么写的 ...

  5. Akka系列(三):监管与容错

    前言...... Akka作为一种成熟的生产环境并发解决方案,必须拥有一套完善的错误异常处理机制,本文主要讲讲Akka中的监管和容错. 监管 看过我上篇文章的同学应该对Actor系统的工作流程有了一定 ...

  6. Vmware ESXI 安装Windows

    Vmware ESXI 安装Windows >ESXi专为运行虚拟机.最大限度降低配置要求和简化部署而设计.只需几分钟时间,客户便可完成从安装到运行虚拟机的全过程,特别是在下载并安装预配置虚拟设 ...

  7. $Prufer$序列

    \(Prufer\)序列 \(Prufer\)序列与树的相互转换: 树->\(Prufer\)序列 找到一个编号最小的叶子结点,把这个点删掉并且把跟他连着的那个点的编号加入\(Prufer\)序 ...

  8. Balloon Robot ZOJ - 3981

    大意: n个参赛队, m个座位, 一共交了p次题, 一个机器人每秒钟会从位置$i$走到$i+1$, 若在$m$直接走到$1$, 当走到一个队伍就给该队应得的气球. 对于每道题, 假设交题时间$t_a$ ...

  9. CF Gym102028G Shortest Paths on Random Forests

    传送门 这题要求的期望,就是总权值(所有不在同一个连通块点对的贡献+同一连通块点对的贡献)/总方案(森林个数) 先求森林个数,森林是由一堆树组成的,而根据purfer序列,一棵\(n\)个点的有标号的 ...

  10. IntelliJ IDEA 远程调试 Tomcat 的方法

    在调试代码的过程中,为了更好的定位及解决问题,有时候需要我们使用远程调试的方法.在本文中,就让我们一起来看看,如何利用 IntelliJ IDEA 进行远程 Tomcat 的调试. 首先,配置remo ...