在日常工作中,我经常需要从excel中通过vlookup函数查询一些工单号,然后生成Dataload命令来进行工单结束的批量操作。
这些操作通常需要打开ecxcel,然后挨个输入户号。如果每次都要打开excel,或者手动拼接字符串,就会比较麻烦和耗时。

为了解决这个问题,我用Python和Flask框架,以及SQLite数据库来实现了一个小工具,它可以让用户在网页上输入一些数字,并根据用户的输入是工单号还是用户号,自动判断是否需要进行数据库查询,如果是工单号,就在数据库中查找相应的工单号,如输入的时候工单号,则直接进行拼接dataload命令。最终,将成成的dataload命令直接显示在网页上。这样就可以方便地将数据导入或导出到dataload中。

功能介绍

这个小工具主要有两个功能:查找数据和生成Dataload命令。

查找数据

以下是对代码的详细解释。

首先,代码导入了必要的库:Flask和sqlite3。然后,创建了一个Flask应用实例,并定义了两个路由。

from flask import Flask, render_template, request
import sqlite3
app = Flask(__name__)

路由 “/” 返回主页 index.html。在index.html中,用户可以输入需要查询的数字,将其以换行符分隔,并点击"查询"按钮。

@app.route('/')
def index():return render_template('index.html')

路由 “/find_numbers” 接收POST请求,获取用户输入的数字并将其以换行符分割为单个数字,遍历每个数字并查询数据库。

如果数字长度为11,则从数据库中查询与该数字匹配的work_id,并使用查询结果生成dataload命令的三个不同的命令行:huifu、zhongzhi和shenpi。

@app.route('/find_numbers', methods=['POST'])
def find_numbers():# 获取用户输入的user_id# 获取表单中的输入数据(字符串类型)input_str = request.form['user_id']# 将字符串以换行符分割成一个个数字input_numbers = input_str.split('\n')# 遍历所有数字并查询数据库conn = sqlite3.connect('work_data2.db')c = conn.cursor()huifu = ['*ML(1090,176) *SL(1)  *ML(1082,360)   *SL(6)  *ML(136,244)    *SL(1)  *ML(672,272)    *UP *UP \{ENTER}    *SL(2)']zhongzhi = ['*ML(60,214) *SL(0.2)    *ML(58,246) *SL(0.2)    *ML(498,271)    *SL(0.2)    *ML(420,415)    *SL(0.2)']shenpi = ['*ML(1090,176)   *SL(1)  *ML(1082,360)   *SL(6)  *ML(365,243)    *SL(1)  *ML(668,272)    *UP *UP \{ENTER}    *SL(2)']

如果数字长度为17,则直接使用输入的数字生成相应的dataload命令。

elif len(num) == 17:huifu.append('*ML(139,272)    \^A \{BACKSPACE}    ' + num.strip() + ' *ML(715,274)    *SL(5)  *ML(241,389)    *ML(241,389)    *SL(5)  *ML(838,508)    结束两件套工单 *ML(1105,653)   *SL(2)  *ML(1135,541)   *SL(5)')zhongzhi.append('*ML(79,210)  *ML(184,271)    \^A \{BACKSPACE}    ' + num.strip() + ' *ML(536,273)    *SL(8)  *ML(513,391)    *ML(34,333) *SL(1)  *ML(1135,543)   *SL(1)  *ML(355,336)    *SL(4)  *ML(900,566)    清理两件套工单 *ML(1077,631)   *SL(3)  *ML(1134,541)   *SL(1)  *ML(1131,626)   *SL(4)')shenpi.append('*ML(139,272)   \^A \{BACKSPACE}    ' + num.strip() + ' *ML(715,274)    *SL(5)  *ML(178,419)    *ML(178,419)    *SL(5)  *ML(954,549)    *ML(785,574)    *ML(781,583)    结束两件套工单 *ML(1180,646)   *SL(2)  *ML(1135,541)       *SL(4)')

如果数据库中找不到与输入数字匹配的work_id,则将数字添加到cant_find列表中。

  cant_find+=num

最后,将cant_find列表中的数字转换为字符串并将其与dataload命令版本一起返回给用户。

    return render_template('result.html', huifu=huifu,zhongzhi=zhongzhi,shenpi=shenpi,cant_find=cant_find)

需要注意的是,代码中使用的数据库文件名为 “work_data2.db”。在运行代码之前,应确保该数据库文件存在并包含正确的数据。此外,代码中的dataload命令版本可能需要根据具体的需求进行修改

以下是完整代码:

# 导入必要的库
from flask import Flask, render_template, request
import sqlite3# 创建Flask应用实例
app = Flask(__name__)# 定义主页路由,返回index.html页面
@app.route('/')
def index():return render_template('index.html')# 定义查询路由,接收用户输入的user_id并返回对应数据
@app.route('/find_numbers', methods=['POST'])
def find_numbers():# 获取用户输入的user_id# 获取表单中的输入数据(字符串类型)input_str = request.form['user_id']# 将字符串以换行符分割成一个个数字input_numbers = input_str.split('\n')# 遍历所有数字并查询数据库conn = sqlite3.connect('work_data2.db')c = conn.cursor()huifu = ['*ML(1090,176) *SL(1)  *ML(1082,360)   *SL(6)  *ML(136,244)    *SL(1)  *ML(672,272)    *UP *UP \{ENTER}    *SL(2)']zhongzhi = ['*ML(60,214) *SL(0.2)    *ML(58,246) *SL(0.2)    *ML(498,271)    *SL(0.2)    *ML(420,415)    *SL(0.2)']shenpi = ['*ML(1090,176)   *SL(1)  *ML(1082,360)   *SL(6)  *ML(365,243)    *SL(1)  *ML(668,272)    *UP *UP \{ENTER}    *SL(2)']cant_find = []for num in input_numbers:if len(num) == 11:c.execute("SELECT work_id FROM work WHERE user_id = ?", (num,))result = c.fetchone()if result is not None:huifu.append('*ML(139,272)  \^A \{BACKSPACE}    ' + str(result[0]) + '  *ML(715,274)    *SL(5)  *ML(241,389)    *ML(241,389)    *SL(5)  *ML(838,508)    结束两件套工单 *ML(1105,653)   *SL(2)  *ML(1135,541)   *SL(5)')zhongzhi.append('*ML(79,210)  *ML(184,271)    \^A \{BACKSPACE}    ' + str(result[0]) + '  *ML(536,273)    *SL(8)  *ML(513,391)    *ML(34,333) *SL(1)  *ML(1135,543)   *SL(1)  *ML(355,336)    *SL(4)  *ML(900,566)    清理两件套工单 *ML(1077,631)   *SL(3)  *ML(1134,541)   *SL(1)  *ML(1131,626)   *SL(4)')shenpi.append('*ML(139,272)   \^A \{BACKSPACE}    ' + str(result[0]) + '  *ML(715,274)    *SL(5)  *ML(178,419)    *ML(178,419)    *SL(5)  *ML(954,549)    *ML(785,574)    *ML(781,583)    结束两件套工单 *ML(1180,646)   *SL(2)  *ML(1135,541)       *SL(4)')else:cant_find+=numelif len(num) == 17:huifu.append('*ML(139,272) \^A \{BACKSPACE}    ' + num.strip() + ' *ML(715,274)    *SL(5)  *ML(241,389)    *ML(241,389)    *SL(5)  *ML(838,508)    结束两件套工单 *ML(1105,653)   *SL(2)  *ML(1135,541)   *SL(5)')zhongzhi.append('*ML(79,210)  *ML(184,271)    \^A \{BACKSPACE}    ' + num.strip() + ' *ML(536,273)    *SL(8)  *ML(513,391)    *ML(34,333) *SL(1)  *ML(1135,543)   *SL(1)  *ML(355,336)    *SL(4)  *ML(900,566)    清理两件套工单 *ML(1077,631)   *SL(3)  *ML(1134,541)   *SL(1)  *ML(1131,626)   *SL(4)')shenpi.append('*ML(139,272)   \^A \{BACKSPACE}    ' + num.strip() + ' *ML(715,274)    *SL(5)  *ML(178,419)    *ML(178,419)    *SL(5)  *ML(954,549)    *ML(785,574)    *ML(781,583)    结束两件套工单 *ML(1180,646)   *SL(2)  *ML(1135,541)       *SL(4)')conn.close()# 返回结果页面,传递查询结果return render_template('result.html', huifu=huifu,zhongzhi=zhongzhi,shenpi=shenpi,cant_find=cant_find)# 主程序入口
if __name__ == '__main__':app.run(debug=True,port=)

一个python+flask和SQLite的数字查找以及Dataload命令生成的小工具相关推荐

  1. 如何检查一个Python字符串是否只包含数字?

    如何检查一个Python字符串是否只包含数字? python String类中有一个名为isdigit()的方法,如果字符串中所有字符都是数字且至少有一个字符,则返回true,否则返回false. p ...

  2. python Flask 连接sqlite

    文章目录 Fask SQLite介绍 sqlite连接字符串 flask 连接 sqlite的源码 Fask Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采 ...

  3. 【Python的自学之路】(六):案例分析第四课-小工具2.0

    目录 序言 背景 思路 代码及解析 跋文 序言 小工具1.0版本,备份oracle存储过程的小工具上篇文章已经都了解完毕了,下面继续进行功能升级,2.0版本-表数据的导出功能. 背景 案例分析第四课- ...

  4. InkImageDataSetGenerator-开源一个可用于机器学习的书写轨迹图片生成的小工具

    这是一个简单易用的图片数据集生成小工具,基于OpenCV和UWP Ink API,它可以根据指定的手写轨迹生成一系列各个角度的图片.每张图片的尺寸和总体数量都是可以指定的,均存放在统一的生成目录中.h ...

  5. python+flask+html/css+mysql+BAE 打造CSDN简历自动生成系统(附网站完全源码)

    1.背景        一直想自己动手写个web app玩玩,前几天看了一个github的resume自动生成的web-app,所以就动手仿造了一个csdn的简历生成器.结构很简单,前端是html/c ...

  6. python从键盘获取输入数字_python获取从命令行输入数字的方法

    本文实例讲述了python获取从命令行输入数字的方法.分享给大家供大家参考.具体如下: #---------------------------------------- # Name: numeri ...

  7. python读取excel写入数据库_python实现读取excel写入mysql的小工具详解

    Python是数据分析的强大利器 利用Python做数据分析,第一步就是学习如何读取日常工作中产生各种excel报表并存入数据中,方便后续数据处理. 这里向大家分享python如何读取excel,并使 ...

  8. python 参数解析器_Python中最好用的命令行参数解析工具

    接下来只剩下 argparse 这一神器,它几乎能满足我对命令解析器的所有需求.它支持解析一参数多值,可以自动生成help命令和帮助文档,支持子解析器,支持限制参数取值范围等等功能. 身为老司机,还是 ...

  9. 分享自动生成对联小工具的Python开发过程

    前段时间用Python写了个生成对联的小程序,程序主要功能就是可以生成对联图片,用指定的背景根据输入的对联内容在程序目录中生成对联图片.生成的图片文件如下所示: 打开一幅生成的图片可以看到如下效果: ...

最新文章

  1. git 命令简单总结
  2. linux内核网络协议栈--架构分析(十八)
  3. MagicalRecord使用中的注意事项
  4. Windows Server 2008 R2修改远程桌面连接数
  5. 图像处理技术(三)白平衡
  6. python文件封装成jar_【Python】Python文件打包为可执行文件
  7. ArrayList源码解读(jdk1.8)
  8. 微博上一些有用的话(四)
  9. MarkdownPad2安装Awesomium SDK-Windows官方链接
  10. 地理坐标定位和计算距离
  11. 【技术沙龙】星火计划 | 腾讯自研Kona JDK技术分享沙龙火热报名中
  12. java.sql.SQLException: No suitable driver found for “jdbc:mysql://localhost:3306/db1“;
  13. An error occurred at line: [14] in the generated java file:
  14. JS字符串截取方法 JS字符串查找指定字符方法 JS字符串替换指定字符方法 JS字符串插入指定位置方法 JS字符串删除指定字符方法
  15. 银行信贷管理系统的客户关系管理子模块
  16. Linux如何永久以命令行界面形式登录
  17. 使用JMS进行消息传递
  18. 代码文档生成工具Doxygen教程及实例
  19. 动态规划——矩阵链相乘
  20. 利用 git status -uno 找回不小心删除了些啥

热门文章

  1. RCWL-0516微波雷达模块检测人体移动(发光二极管)
  2. c#语法糖模式匹配【switch 表达式】
  3. bigemap大地图软件功能对比分析
  4. 资深Android开发带你入门Framework,深夜思考
  5. css动画放大缩小效果
  6. 互动媒体作业一——动态图形临摹
  7. java pdf去水印_java使用spire.pdf去除水印
  8. 易中天讲座免费在线学习 免费下载
  9. 109:vue+openlayers 定位动画(平移-弹性平移-飞行 示例代码)
  10. 520特别企划 | Z世代进入婚恋市场,婚恋交友行业会有什么变化?​