Python3 操作mysql数据库
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数据库的更多相关文章
- python3操作MySQL数据库
安装PyMySQL 下载地址:https://pypi.python.org/pypi/PyMySQL 1.把操作Mysql数据库封装成类,数据库和表先建好 import pymysql.cursor ...
- (接口自动化)Python3操作MySQL数据库
基础语法: import pymysql #导入模块 conn = pymysql.connect(host='localhost',user='root', passwd='123456', db= ...
- python3操作mysql数据库增删改查
#!/usr/bin/python3 import pymysql import types db=pymysql.connect("localhost","root&q ...
- python3操作mysql数据库表01(基本操作)
#!/usr/bin/env python# -*- coding:UTF-8 -*- import requestsfrom bs4 import BeautifulSoupfrom bs4 imp ...
- python3操作MySQL数据库,一次插入多条记录的方法
这里提供一个思路,使用字符串拼接的方法,将sql语句拼接出来,然后去执行: l = ["] s = '-' print(s.join(l))
- python3操作mysql数据库表01(封装查询单条、多条数据)
#!/usr/bin/env python# -*- coding:UTF-8 -*- import pymysql# import os'''封装查询单条.多条数据'''# os.environ[' ...
- python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy
内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...
- python3操作mysql教程
一.下载\安装\配置 1. python3 Python3下载网址:http://www.python.org/getit/ 当前最新版本是python3.2,下载地址是 http://www.pyt ...
- python接口自动化(三十八)-python操作mysql数据库(详解)
简介 现在的招聘要求对QA人员的要求越来越高,测试的一些基础知识就不必说了,来说测试知识以外的,会不会一门或者多门开发与语言,能不能读懂代码,会不会Linux,会不会搭建测试系统,会不会常用的数据库, ...
随机推荐
- python3 selenuim PC端使用chrome模拟手机进行H5自动化
情况说明:初次在做PC端使用chrome进行H5自动化测试时,以为和app端自动化一样使用click()就可以对按钮进行点击,找了好几天也没有找到解决方法,有些人说是工程问题,有些人是使用微信进行H5 ...
- 【VS开发】解决位图缩放失真
当用以下函数加载一张位图时,当窗口发生重绘更改大小时,位图将失真: CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP2); BITMAP bmp; bit ...
- AspNet Core Swagger4.0 生成请求model描述
今天给大家分享 swagger 俩个冷门的小技巧 获取控制器描述 将 IncludeXmlComments 方法第二个参数设置为 true 即可 public static void IncludeX ...
- 文件的上传(1)(表单上传和ajax文件异步上传)
文件的上传(表单上传和ajax文件异步上传) 项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举 ...
- CentOS Linux修改默认Bash shell为Zsh shell
Shell是在程序员与服务器间建立一个桥梁,它对外提供一系列命令,让我们得以控制服务器.常用的Bash就是Shell的一种,也是Linux下默认Shell程序.这里介绍一种更强大的.更人性化的Shel ...
- Log的相关用法
1.最好用静态final定义Log变量 private static final Log log = LogFactory.getLog(MyTest.class); 这样做的好处有三: 可以保证线程 ...
- GPIB、USB、PCI、PCI Express和以太网/LAN/LXI
GPIB 我们研究的第一个总线是IEEE 488总线,较为熟悉的称谓是GPIB(通用接口总线).GPIB是一种在业界已经得到证明的专为仪器控制应用设计的总线.GPIB在过去30年来一直是鲁棒的.可靠的 ...
- A Dangerous Maze (期望值)
https://vjudge.net/problem/LightOJ-1027?tdsourcetag=s_pctim_aiomsg [被满为姐姐碾压 降智打击题]
- laravel5.5学习2-路由系统
一.初识路由 路由系统是所有 PHP 框架的核心,路由承载的是 URL 到代码片段的映射,不同的框架所附带的路由系统是这个框架本质最真实的写照,一丝不挂,一览无余.Laravel 路由中文文档:htt ...
- python之self的理解
一.self的位置是出现在哪里? 首先,self是在类的方法中的,在调用此方法时,不用给self赋值,Python会自动给他赋值,而且这个值就是类的实例--对象本身.也可以将self换成别的叫法例如s ...