惯例还是先交代下背景:最近因为工作需要,同事需要一批数据,每次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】批量导出数据并处理——第一弹相关推荐

  1. python创建类统计属性_轻松创建统计数据的Python包

    python创建类统计属性 介绍 (Introduction) Sometimes you may need a distribution figure for your slide or class ...

  2. 修改数据_如何批量修改数据库中的特定记录数据

    大家好,今日我们继续VBA数据库解决方案的第30讲:如何批量修改数据库中的特定记记录数据.在上一讲中,我们讲了批量编辑数据的方案,用到的是UPDATE方法,今日我们仍用此方法解决删除特定记录.这些记录 ...

  3. python处理期货数据_获取和讯期货数据(Python版本)

    获取和讯期货数据(Python版本) 获取和讯期货数据(Python版本) Author: edwardgyw, Date: 2016-11-28 14:38:44 Tags: Python 扩展 商 ...

  4. python电商项目介绍_电商大数据项目-推荐系统实战(一)

    本项目是基于Spark MLLib的大数据电商推荐系统项目,使用了scala语言和java语言.基于python语言的推荐系统项目会另外写一篇博客.在阅读本博客以前,需要有以下基础: 1.linux的 ...

  5. python人工智能大数据_人工智能及大数据中的Python

    2016年,Python取代Java成为高校中最受欢迎的语言.2018年三大语言榜单中,Python陆续登上了IEEE.PYPL排行榜单之首.薪酬调查结果显示,Python开发人员是收入最高的开发人员 ...

  6. python如何设置字体大小_[Python Basic]如何设置 Python 的运行环境

    一如既往地, 咱们不仅仅是学习 Python 的基础知识, 同时, 也按照2/8 规律学习关键知识的关键部分 - python 核心词汇 如何安装 Python 下载 Python 打开网址:http ...

  7. python嵩天课堂笔记_[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周)

    [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) 目录 强化学习 定义 马尔科夫决策过程 基本元素 值函数 最优值 ...

  8. python输入文件名读取文件_[Python] python3 文件操作:从键盘输入、打开关闭文件、读取写入文件、重命名与删除文件等...

    1.从键盘输入 Python 2有两个内置的函数用于从标准输入读取数据,默认情况下来自键盘.这两个函数分别是:input()和raw_input(). Python 3中,不建议使用raw_input ...

  9. python如何检验显著性差异_[Python] 如何证明两组样本有显著性差异(t-test假设检验) | 学步园...

    现有两组样本数据,假如它们分别基于两套不同的方法,或者测于不同的设备,又或是出自两个人之手,如何证明它们有或没有显著性差别呢?当然可以拿个Excel表把数据画个图,然后找一堆人来投票,看觉得差不多还是 ...

  10. 四全集学python选哪种电脑_“Python教程哪个版本最适合学习?“python教程全集

    python教程,求一套比较好的python教程 好不好主要先看你自己,理解能力样,有没有接触过编程,有没础,这很重要: 看教程,能不能先给你建立起知识体系框架,许多教程一上来就直接给你灌输知识很让人 ...

最新文章

  1. 在高并发分布式情况下生成唯一标识id
  2. 【转载】c#多线程使用webbrowser控件
  3. DOM方式动态加载数据
  4. vue created 调用方法_深入解析 Vue 的热更新原理,偷学尤大的秘籍?
  5. 基于Win32Api创建窗口程序
  6. udp java 检测连接_简单的JAVA UDP连接测试
  7. java中为按钮添加图片_我们可以在Java接口中为成员定义私有和受保护的修饰符吗?...
  8. Django单表,连表查询
  9. Java中的基本类型和引用类型(未完)
  10. MySQL优化(三):优化数据库对象
  11. win10下安装多个cuda(cuda9.0和10.0),并自由切换版本
  12. 新能源行业SCM供应链管理平台构建一站式新能源供应链交易闭环
  13. Hello CSDN blog
  14. 8086+8255A写数码管Proteus仿真及8086Proteus仿真问题
  15. Topic 7. 临床预测模型--Cox回归
  16. 读取assets目录下的文件详细介绍
  17. PHP网上购物商城系统 毕业设计参考
  18. 打造Win10+WSL开发环境(2)
  19. [GIS原理] 8.2 空间分析-邻近度分析-Delaunay三角网(德劳内)/泰森多边形(Thiessen多边形)/冯洛诺伊图(Voronoi图)
  20. spring cloud 总结(摘抄版)

热门文章

  1. 高并发解决方案相关面试题
  2. ultraiso软碟通dmg转iso图文教程
  3. html中字体 楷体_HTML和CSS中如何设置中文字体
  4. 10个比较不错的 JavaScript 库
  5. java中 this详解
  6. 压测工具ab的安装(mac环境)
  7. 推荐一个商业级saas开源小程序电商java项目
  8. 工业中常见的有塑胶模、五金冲压模、压铸模、吹塑模、挤塑模
  9. haneWIN NFS服务器端 V1.1.69 汉化版
  10. pandas空值填充