python如何批量导出数据_【Python】批量导出数据并处理——第一弹
惯例还是先交代下背景:最近因为工作需要,同事需要一批数据,每次7天7个人所以就是49个文件,虽然数据条数不多,但是处理起来比较麻烦,首先需要设置七个人不同的角色权限——通过接口发送请求,得到存在服务器中的49个文件——下载文件到本地——因为文件是已压缩包形式存在的,所以下载下来后还需要解压、分类、打包后再次发送,预想将上述的步骤全通过代码来实现主要可以分以下几部分:
通过数据库设置七个人的角色权限
再通过接口发送请求(1、2是本文所实现的功能)
下载文件到本地
文件批量解压
根据解压后的文件中的内容重命名文件
将重命名后的文件分类放到不同的文件夹中
再将不同的文件夹打包(4~7完成了一部分,但有些问题一直没解决,头疼中。。。。)
通过微信将压缩包发给需要的人(待定,或者是使用邮件发送?)
现在设想的就分这么多步骤,需要使用到的库涵盖了数据库操作、发送请求、下载文件(连接服务器)、文件的解压缩、文件的读取、重命名以及发送微信文件或邮件,可以说相当全面了,全部完成后肯定会对自己的水平提升有很大帮助。好了,背景交代完毕,上代码!(PS. 其实批量发送接口请求这部分功能之前已经通过Jmeter或SoapUI实现了,此次算是通过第三种方法实现一下吧!)
1、首先来看下实现该部分功能的文件结构吧!
2、数据库操作相关,用到的库是pymysql,代码如下:
# -*- coding:UTF-8 -*-
import pymysql
class Sql():
def __init__(self,host,port,database,user,password):
try:
self.db = pymysql.connect(host=host,port=port,user=user,password=password,database=database)
print('=======Connect Success!=======\n')
except pymysql.Error as e:
print('Connect Error: %s' %e)
def update(self,sql):
cursor = self.db.cursor()
try:
self.db.ping(reconnect=True)# 解决pymysql.err.InterfaceError报错
cursor.execute(sql)
self.db.commit()
print('Update Success!\n')
except:
self.db.rollback()
self.db.close()
3、这部分实现的功能是首先初始化七个用户的角色权限,然后发送请求,用到的库有requests、json、configparser
# -*- coding:UTF-8 -*-
import requests
import json
import configparser
from database import Sql
# import os
def send():
conf = configparser.ConfigParser()
conf.read('.\config.ini')
# 遍历配置文件中的data部分
user_conf = conf.get('data', 'export_user').split(',')
data_conf = conf.get('data', 'downloadDate').split(',')
url = 'http://xxx.xxx.xxx.xx:xxxx/xxxx/xxxx'
headers = {'content-type': 'application/json'}
# 遍历config.ini中的user和date,逐条发送post请求,请求体使用json格式
for name in user_conf:
for date in data_conf:
data = {"userId": name, "downloadDates": date}
req = requests.post(url,data=json.dumps(data),headers=headers)
print('已发送>>> %s %s 的数据' % (data['userId'], data['downloadDates']))
if __name__ == '__main__':
# 选择使用的数据库
db_choice = 'db_test'
conf = configparser.ConfigParser()
conf.read('.\config.ini')
host = conf.get(db_choice,'host')
port = int(conf.get(db_choice,'port'))
database = conf.get(db_choice,'database')
user = conf.get(db_choice,'user')
password = conf.get(db_choice,'password')
My_sql = Sql(host,port,database,user,password)
real_sql = [
'''UPDATE `A`.`user` SET `type` = 'xxx', `type_id` = 103 WHERE `user_id` = 'a';''',
'''UPDATE `A`.`user` SET `type` = 'xxx', `type_id` = 108 WHERE `user_id` = 'b';''',
'''UPDATE `A`.`user` SET `type` = 'xxx', `type_id` = 111 WHERE `user_id` = 'c';''',
'''UPDATE `A`.`user` SET `type` = 'xxx', `type_id` = 118 WHERE `user_id` = 'd';''',
'''UPDATE `A`.`user` SET `type` = 'xxx', `type_id` = 104 WHERE `user_id` = 'e';''',
'''UPDATE `A`.`user` SET `type` = 'xxx', `type_id` = 100 WHERE `user_id` = 'f';''',
'''UPDATE `A`.`user` SET `type` = 'xxx', `type_id` = 112 WHERE `user_id` = 'g';'''
]
for s in real_sql:
my_update = My_sql.update(s)
send()
4、配置文件,文件中的各部分数据进行了隐藏,分测试环境和正式环境,export_user代表七个用户
[db_Online]
host = xxx.xxx.xxx.xx
port = 3306
database = mydatabase
user = myuser
password = mypassword
[db_test]
host = xxx.xxx.xxx.xx
port = 3306
database = mydatabase
user = myuser
password = mypassword
[data]
export_user = a,b,c,d,e,f,g
downloadDate = 2018.08.01,2018.08.02,2018.08.03,2018.08.04,2018.08.05,2018.08.06,2018.08.07
5、正在找怎么通过Jenkins执行这些代码(Jenkins+Jmeter+Ant也完全可以实现),这样项目组里的人就谁都可以完成这项工作了(我才不是因为想要偷懒呢!),待续吧。。。。
写在最后,本人新手菜鸟,代码的严谨性、可读性与简洁性。。。。。好吧,根本就没有这些东西,哈哈哈~~欢迎各位大佬给提意见!
转载自:https://blog.csdn.net/xjian32123/article/details/82665257
python如何批量导出数据_【Python】批量导出数据并处理——第一弹相关推荐
- python创建类统计属性_轻松创建统计数据的Python包
python创建类统计属性 介绍 (Introduction) Sometimes you may need a distribution figure for your slide or class ...
- 修改数据_如何批量修改数据库中的特定记录数据
大家好,今日我们继续VBA数据库解决方案的第30讲:如何批量修改数据库中的特定记记录数据.在上一讲中,我们讲了批量编辑数据的方案,用到的是UPDATE方法,今日我们仍用此方法解决删除特定记录.这些记录 ...
- python处理期货数据_获取和讯期货数据(Python版本)
获取和讯期货数据(Python版本) 获取和讯期货数据(Python版本) Author: edwardgyw, Date: 2016-11-28 14:38:44 Tags: Python 扩展 商 ...
- python电商项目介绍_电商大数据项目-推荐系统实战(一)
本项目是基于Spark MLLib的大数据电商推荐系统项目,使用了scala语言和java语言.基于python语言的推荐系统项目会另外写一篇博客.在阅读本博客以前,需要有以下基础: 1.linux的 ...
- python人工智能大数据_人工智能及大数据中的Python
2016年,Python取代Java成为高校中最受欢迎的语言.2018年三大语言榜单中,Python陆续登上了IEEE.PYPL排行榜单之首.薪酬调查结果显示,Python开发人员是收入最高的开发人员 ...
- python如何设置字体大小_[Python Basic]如何设置 Python 的运行环境
一如既往地, 咱们不仅仅是学习 Python 的基础知识, 同时, 也按照2/8 规律学习关键知识的关键部分 - python 核心词汇 如何安装 Python 下载 Python 打开网址:http ...
- python嵩天课堂笔记_[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周)
[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) 目录 强化学习 定义 马尔科夫决策过程 基本元素 值函数 最优值 ...
- python输入文件名读取文件_[Python] python3 文件操作:从键盘输入、打开关闭文件、读取写入文件、重命名与删除文件等...
1.从键盘输入 Python 2有两个内置的函数用于从标准输入读取数据,默认情况下来自键盘.这两个函数分别是:input()和raw_input(). Python 3中,不建议使用raw_input ...
- python如何检验显著性差异_[Python] 如何证明两组样本有显著性差异(t-test假设检验) | 学步园...
现有两组样本数据,假如它们分别基于两套不同的方法,或者测于不同的设备,又或是出自两个人之手,如何证明它们有或没有显著性差别呢?当然可以拿个Excel表把数据画个图,然后找一堆人来投票,看觉得差不多还是 ...
- 四全集学python选哪种电脑_“Python教程哪个版本最适合学习?“python教程全集
python教程,求一套比较好的python教程 好不好主要先看你自己,理解能力样,有没有接触过编程,有没础,这很重要: 看教程,能不能先给你建立起知识体系框架,许多教程一上来就直接给你灌输知识很让人 ...
最新文章
- 在高并发分布式情况下生成唯一标识id
- 【转载】c#多线程使用webbrowser控件
- DOM方式动态加载数据
- vue created 调用方法_深入解析 Vue 的热更新原理,偷学尤大的秘籍?
- 基于Win32Api创建窗口程序
- udp java 检测连接_简单的JAVA UDP连接测试
- java中为按钮添加图片_我们可以在Java接口中为成员定义私有和受保护的修饰符吗?...
- Django单表,连表查询
- Java中的基本类型和引用类型(未完)
- MySQL优化(三):优化数据库对象
- win10下安装多个cuda(cuda9.0和10.0),并自由切换版本
- 新能源行业SCM供应链管理平台构建一站式新能源供应链交易闭环
- Hello CSDN blog
- 8086+8255A写数码管Proteus仿真及8086Proteus仿真问题
- Topic 7. 临床预测模型--Cox回归
- 读取assets目录下的文件详细介绍
- PHP网上购物商城系统 毕业设计参考
- 打造Win10+WSL开发环境(2)
- [GIS原理] 8.2 空间分析-邻近度分析-Delaunay三角网(德劳内)/泰森多边形(Thiessen多边形)/冯洛诺伊图(Voronoi图)
- spring cloud 总结(摘抄版)