我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python/MySQL怎么实现Excel文件自动处理数据功能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python/MySQL怎么实现Excel文件自动处理数据功能

今天小编给大家分享一下Python/MySQL怎么实现Excel文件自动处理数据功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    问题描述

    在没有服务器存储数据,只有excel文件的情况下,如何利用SQL和python实现数据分析和数据自动处理的功能?

    例如:消费者购买商品时,会挑选商品然后再对商品付款。现在需要查找出用户挑中但是没有付款的商品并标识为未下单,付款的商品标注为下单。并且每隔一段时间自动执行上述操作。

    目的:定时抽取上面的数据分析用户购买商品的行为。对比付款和选中未下单的商品的性能、价格等信息来发掘用户喜好,从而提高选品下单率。

    注意:

    • 用户的信息主要以excel的形式存储,没有服务器。

    • 商品表里面存了用户挑选的商品信息。

    • 订单表里面存了用户付款的商品信息。

    解决方案

    一、SQL查询

    首先想到的是利用SQL语言实现这样的查询。具体实现过程如下:

    (1) 建立dingdan表和shangpin表:

    -- ------------------------------ Table structure for dingdan-- ----------------------------DROP TABLE IF EXISTS `dingdan`;CREATE TABLE `dingdan`  (  `d_id` int(11) NOT NULL,  `UPC` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,  PRIMARY KEY (`d_id`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ------------------------------ Records of dingdan-- ----------------------------INSERT INTO `dingdan` VALUES (1, '6972470560664');INSERT INTO `dingdan` VALUES (2, '6972470560664');INSERT INTO `dingdan` VALUES (3, '6972470561227');INSERT INTO `dingdan` VALUES (4, '6972470561890');INSERT INTO `dingdan` VALUES (5, '6972470561906');SET FOREIGN_KEY_CHECKS = 1;-- ------------------------------ Table structure for shangpin-- ----------------------------DROP TABLE IF EXISTS `shangpin`;CREATE TABLE `shangpin`  (  `UPC` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,  `商品` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,  PRIMARY KEY (`UPC`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ------------------------------ Records of shangpin-- ----------------------------INSERT INTO `shangpin` VALUES ('6972470560657', 'A');INSERT INTO `shangpin` VALUES ('6972470560664', 'A');INSERT INTO `shangpin` VALUES ('6972470561210', 'D');INSERT INTO `shangpin` VALUES ('6972470561227', 'B');INSERT INTO `shangpin` VALUES ('6972470561890', 'C');INSERT INTO `shangpin` VALUES ('6972470651791', 'B');SET FOREIGN_KEY_CHECKS = 1;

    Python/MySQL怎么实现Excel文件自动处理数据功能

    Python/MySQL怎么实现Excel文件自动处理数据功能

    (2) 将excel数据导入SQL软件中。

    执行下面的查询语句进行查找:

    -- 搜索未下单的商品信息SELECT *,if(bb.UPC IS NULL,'未下单', '下单') as 下单情况FROM shangpin aaLEFT JOIN dingdan bbON aa.UPC = bb.UPC

    得到以下查询结果:

    Python/MySQL怎么实现Excel文件自动处理数据功能

    (3) 将搜索结果导出为excel。

    (4) 隔一段时间,需要人工重复上面的操作。

    二、SQL、python处理

    利用SQL查询、python做定时处理。具体实现过程如下:

    (1) 重复方案1中的步骤1和2,将数据导入到数据库中。

    (2) 用python连接数据库并查找数据。

    import pymysql  #导入PyMySQL库 import datetimeimport warningsimport pandas as pdimport matplotlib.pyplot as pltwarnings.filterwarnings('ignore')# 1. 连接数据库,创建连接对象 db# 连接对象作用是:连接数据库、发送数据库信息、处理回滚操作(查询中断时,数据库回到最初状态)、# 创建新的光标对象 def connect_database(database, password):     db = pymysql.connect(host ="localhost", #host属性                               user ="sys", #用户名                                password = password, #此处填登录数据库的密码                               database = database, #数据库名                               charset="utf8"  # 如果中文显示乱码,则需要添加charset = "utf8"                         )     return dbdef read_data(db):     # 2. 使用 cursor() 方法创建一个游标对象 cursor     cursor = db.cursor()     # 3. 利用MySQL语句查找数据并转化为FrameData(包含列名)     try:          # 使用 execute() 方法执行 SQL 查询          mysql = "SELECT *, if(bb.UPC IS NULL,'未下单', '下单') as 下单情况 FROM shangpin aa LEFT JOIN dingdan bb ON aa.UPC = bb.UPC" # SQL语句          cursor.execute(mysql)          data = cursor.fetchall()          # 下面为将获取的数据转化为 dataframe 格式          columnDes = cursor.description #获取连接对象的描述信息          #print("cursor.description中的内容:",columnDes)          columnNames = [columnDes[i][0] for i in range(len(columnDes))] #获取列名          df = pd.DataFrame([list(i) for i in data],columns=columnNames) #得到的data为二维元组,逐行取出,转化为列表,再转化为df          print(df)          """          db.commit()若对数据库进行了修改,需进行提交之后再关闭          """          # 提交到数据库执行          #db.commit()          #print("OK")     except:          # 如果发生错误则回滚          db.rollback()          print("失败")     """     使用完成之后需关闭游标和数据库连接,减少资源占用,cursor.close(),db.close()     db.commit()若对数据库进行了修改,需进行提交之后再关闭     """     # 关闭数据库连接     cursor.close()     db.close()     return df

    (3) 做定时任务

    参考

         ## 定时任务     import time     from apscheduler.schedulers.blocking import BlockingScheduler          def job():       dt = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))       print('{} --- {}'.format(text, t))       database = 'sys' #数据库名称       password = 'sys' #数据库用户密码       db = connect_database(database, password)       data_sp = read_data(db)       data_sp.to_excel('../data/data_ans.xlsx', sheet_name='未下单情况')            scheduler = BlockingScheduler()     # 在每天22和23点的25分,运行一次 job 方法     scheduler.add_job(job, 'cron', hour='22-23', minute='25')     scheduler.start()          ## 测试     # 执行任务     def time_printer():         # 输出时间         now = datetime.datetime.now()         ts = now.strftime('%Y-%m-%d %H:%M:%S')         print('do func time :', ts)     # 定时任务     def loop_monitor():         while True:             time.sleep(20)  # 暂停20秒                  if __name__ == "__main__":         loop_monitor()

    打开data_ans的excel文件即可查看数据。

    程序需要一直运行,如果因为关机导致程序终止,需要重新运行。

    三、python处理

    python处理。具体实现过程如下:

    (1) 导入excel数据并利用python完成数据查询,以excel的形式导出查询好的数据。

     参考

    import pandas as pddef taskTime():## 1. 分别导入2个表的数据    product = pd.read_excel('d:/python_code/crontab/data/taskdata.xlsx', sheet_name='商品') # 换成自己的路径和sheet名称    order = pd.read_excel('d:/python_code/crontab/data/taskdata.xlsx', sheet_name='订单')     ## 2. 抽取数据    product=product.rename(columns={'UPC':'ID'}) # 对商品表里面的UPC重命名未ID(为了保留订单表里面的CPU着一列)    PO=pd.merge(product,order,left_on='ID', right_on='UPC',how='left') # 左连接抽取数据    PO.loc[pd.isnull(PO['UPC']), '下单情况'] = '未下单' # 找到选中但是未下单的数据标注为未下单    PO['下单情况'] = PO['下单情况'].fillna(value='下单') # 找到下单的数据,在'下单情况'这一列中标注为下单    ## 3. 以excel的形式导出查询好的数据    PO = PO.loc[:, ['ID', 'UPC', '下单情况', '产品名称E', '产品参数C', '价格', '建议零售价','订单日期', '品牌', 'PO#', 'SKU','配置', '单价', '数量', '销售金额', '成本单价', '成本', '成本价含税/未税']] # 按列名导出需要的数据    PO.to_excel('d:/python_code/crontab/data/data_python.xlsx', sheet_name='未下单情况')  # 导出excel表    return POif __name__ == "__main__":  taskTime()    print('执行成功')

    (2) 定时处理

       ## 2. 定时处理   import datetime   from apscheduler.schedulers.blocking import BlockingScheduler      def job():     now = datetime.datetime.now()     ts = now.strftime('%Y-%m-%d %H:%M:%S')     print('执行时间 :', ts)   # 输出时间     taskTime()  # 执行代码      scheduler = BlockingScheduler() ## 定时    # 在每天17和23点的25分,运行一次 job 方法 scheduler.add_job(job, 'cron', hour='17-23', minute='22')   scheduler.start()

    打开data_python的excel文件即可查看数据。

    程序需要一直运行,如果因为关机导致程序终止,需要重新运行。

    四、优化python处理

    1.手动执行代码

    如果电脑需要关机,这时候代码不能一直运行,只能在需要数据的时候执行一下代码。有以下2个执行方法:

    (1)用命令行执行代码,具体操作如下:

    win + R 输入cmd 再输入 路径以及文件名

    python d:\python_code\crontab\code\test.py

    见下图

    Python/MySQL怎么实现Excel文件自动处理数据功能

    注意:数据还有代码的路径要写对

    如果不想用命令行。直接用.bat文件执行也可以。

    首先,需要新建一个.bat文件(用来运行脚本),在这个文件里面写上如下代码后保存:

     python 路径\文件名.py

    Python/MySQL怎么实现Excel文件自动处理数据功能

    将这个文件放到桌面,使用时点击即可。

    2.开机自动执行代码

    将已经保存的.bat文件复制到该目录(C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)下,可能杀毒软件会阻止,选择允许,然后重启电脑即可。

    注:开机自启以后会打开一个cmd窗口,关闭窗口,python程序将停止运行。

    注意:开启自启动可能会让电脑变慢、发热。

    对比四种方案

    方案名称优点缺点
    SQL查询代码简单,实现简单数据一旦更新需要执行导入导出excel的操作。并且需要手动操作,不能自动提醒。
    SQL、python处理避免导出excel;可以自动提醒还是需要导入excel;同时操作SQL和python;自动提醒需要程序一直运行
    python处理避免导入导出;可以自动提醒,只操作python查询时的处理不好做(对新手来说);自动提醒需要程序一直运行
    优化python处理避免导入导出;自动提醒不需要程序一直运行,开机自启动需要配置一下

    以上就是“Python/MySQL怎么实现Excel文件自动处理数据功能”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Python/MySQL怎么实现Excel文件自动处理数据功能

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Python/MySQL怎么实现Excel文件自动处理数据功能

    今天小编给大家分享一下Python/MySQL怎么实现Excel文件自动处理数据功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一
    2023-07-05

    Python/MySQL实现Excel文件自动处理数据功能

    在没有服务器存储数据,只有excel文件的情况下,如何利用SQL和python实现数据分析和数据自动处理的功能?本文就来和大家聊聊解决办法
    2023-02-21

    Python中怎么实现自动化处理文件

    Python中怎么实现自动化处理文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。遍历一个目录中的文件如果有如下多个数据需要读取和处理:├── data │ ├── d
    2023-06-15

    Qt怎么实现自动清理早期数据功能

    今天小编给大家分享一下Qt怎么实现自动清理早期数据功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。功能特点1 软件模块设备
    2023-07-02

    python怎么实现自动整理文件

    本篇内容介绍了“python怎么实现自动整理文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!演示效果:使用前使用后代码:# # -*- c
    2023-06-29

    python怎么实现自动化办公邮件合并功能

    本篇内容主要讲解“python怎么实现自动化办公邮件合并功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python怎么实现自动化办公邮件合并功能”吧!经常使用word办公的小伙伴们经常会遇到
    2023-06-20

    oracle、mysql数据库停止与启动的批处理文件怎么实现

    小编给大家分享一下oracle、mysql数据库停止与启动的批处理文件怎么实现,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.关机,取消关机::关机echo 30秒之后关机%systemroot%\system32\sh
    2023-06-08

    怎么用Python实现自动化处理每月考勤缺卡数据

    这篇文章主要介绍“怎么用Python实现自动化处理每月考勤缺卡数据”,在日常操作中,相信很多人在怎么用Python实现自动化处理每月考勤缺卡数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python
    2023-07-02

    python怎么使用dabl实现数据处理分析及ML自动化

    这篇文章主要讲解了“python怎么使用dabl实现数据处理分析及ML自动化”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python怎么使用dabl实现数据处理分析及ML自动化”吧!dab
    2023-06-25

    怎么用BAT脚本实现自动上传文件到ftp服务器的功能

    这篇文章主要讲解了“怎么用BAT脚本实现自动上传文件到ftp服务器的功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用BAT脚本实现自动上传文件到ftp服务器的功能”吧!代码如下:@E
    2023-06-08

    android轻量级无侵入式管理数据库自动升级组件怎么实现

    这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“android
    2023-07-05

    编程热搜

    目录