在日常工作中,需要对数据进行对比。一般来说,都是保存在数据库中,所以需要对sql语句非常熟练,常常一条命令都是几十行,表和表之间的关系是非常明显的。在得到异常数据后,需要告知特定的人群。在这里,我决定采用企业微信,为什么不用邮箱来群发呢?原因有很多,首先是安全问题,一般用程序发的邮件会被当做垃圾邮件;其次是人群中对邮箱不是经常看所以不是很方便。

一般来说,很多公司也会有企业微信端的,企业微信的消息可以到微信中更是方便了,同时企业微信也有相应的接口说明,很是方便。下面我将从企业微信创建应用,编写群发消息程序,最后实现在web中的应用。

同样的,我这里还是使用django框架下的web应用,视图就展示了查询列表,对比内容为了方便直接了网页跳转。

目录

  • 对比数据并显示视图
  • 企业微信创建
  • 群发消息

对比数据并显示视图

对比数据我直接采用了数据库比对:
models.py:

from django.db import models
class test_excel_info(models.Model):name = models.CharField('名称',max_length=20)pcnum = models.CharField('电脑编号',max_length=30)cause = models.CharField('理由',max_length=30)class oldinfo(models.Model):name=models.CharField('name',max_length=20)pcnum=models.CharField('pcnum',max_length=30)

views.py
这里显示了对应的视图,创建了查询,删除和对比数据。

def info_show(request):info = models.test_excel_info.objects.all()return render(request,'info_list.html',{'info_list':info})def drop_info(request):drop_id =request.GET.get('id')drop_obj = models.test_excel_info.objects.get(id=drop_id)drop_obj.delete()return redirect('/info/')def compare_sql(request):cursor = connection.cursor()cursor.execute("insert into TestDjan_oldinfo(name,pcnum)  values ('kaik','pc112')")return redirect('/info/')

有很多人问我,这里views.py是后端操作,那么如何实现前端交互呢?这里以info_show为例:
可以看到我这里前后端处理得还算好,对于后端的人只要知道接口特性就行,所以如果是一个良好的前后端分离项目,为了系统的维护性,必须让后端开发者写接口文档,否则会比较难受了!
前端的关于操作显示的代码:

views.py中的字典对应关系。

运行结果图:这样编辑和删除也都是页面操作(views.py)了。

企业微信创建

首先在自己手机下载企业微信,为了进行测试,自己先创建一个企业。登录企业微信平台:企业微信
在应用管理创建一个应用。同时记住这里的id和secret,保存下来。


在我的企业可以企业的id,同样需要。

下面就可以编写程序,python调用企业微信接口实现群发信息:接口文档

import requests, sysclass SendWeiXinWork():def __init__(self):self.CORP_ID = "ww"  # 企业号的标识self.SECRET = ""  # 管理组凭证密钥self.AGENT_ID = '1000002'  # 应用IDself.token = self.get_token()def get_token(self):url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"data = {"corpid": self.CORP_ID,"corpsecret": self.SECRET}req = requests.get(url=url, params=data)res = req.json()if res['errmsg'] == 'ok':return res["access_token"]else:return resdef send_message(self, to_user, content):url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % self.tokendata = {#"touser": to_user,  # 发送个人就填用户账号"toparty": 1,  # 发送组内成员就填部门ID"msgtype": "text","agentid": self.AGENT_ID,"text": {"content": content},"safe": "0"}req = requests.post(url=url, json=data)res = req.json()if res['errmsg'] == 'ok':print("send message succeed")return "send message succeed"else:print("send message error", res)return resif __name__ == '__main__':SendWeiXinWork = SendWeiXinWork()SendWeiXinWork.send_message("2", "test for wechat")

可能会出现某些错误:如果显示代理问题,请关闭代理软件;如果ip是问题,请将自己的ip设置为白名单:选择自己创建的应用。注意不要看自己的ipconfig,因为这是内网ip,使用了NAT转换了,所以你可以先跑一下程序,他会报错会告诉你的ip内容。

群发消息

views.py

def send_sql(request):cursor = connection.cursor()cursor.execute("select a.name from TestDjan_test_excel_info a inner  join  TestDjan_oldinfo b on a.name=b.name and a.pcnum !=b.pcnum")myre=cursor.fetchall()for i in myre:name = i[0]SendWeiXinWork = testwechat.SendWeiXinWork()SendWeiXinWork.send_message("2","有错误的信息:"+name)return  redirect('/info/')

urls.py

 path('info/',views.info_show),path('drop_info/',views.drop_info),path('compare_sql/',views.compare_sql),path('send_sql',views.send_sql),

为了方便我直接使用了跳转网页的形式来进行查询对比数据与发送,当然了在对比那块可以实现视图的展示。
这是用户收到的信息:
这是我的数据库测试表内容:

需要对比的表

关键的sql语句:

select a.name from TestDjan_test_excel_info a inner  join  TestDjan_oldinfo b on a.name=b.name and a.pcnum !=b.pcnum

然后部门的人便可以接到以下的内容了:

django对比数据并调用企业微信接口群发相关推荐

  1. java调用企业微信接口发送文件功能

    java调用企业微信接口发送文件功能 代码 结合几位大佬的代码后实现此功能:感谢大佬让我完成此功能的实现,如有侵权,立刻删除. 借鉴文章地址: java调用企业微信接口发送消息https://blog ...

  2. python调用企业微信接口

    python调用企业微信接口实现关联添加用户 # --*-- coding: utf-8 --*--import json import urllib2coreID = secret = apisec ...

  3. H5使用JS-SDK调用企业微信接口、调试

    企业微信开发者工具文档 企业微信-错误码查找工具 写在前面的注意事项 config注入的是企业的身份与权限 agentConfig注入的是应用的身份与权限 jsapi_ticket是H5应用调用企业微 ...

  4. java调用企业微信接口---获取考勤数据

    Static和new的区别? static : 不需要创建实例可直接使用, 会直到程序关闭才会释放资源,类的一个成员被static修饰后,该成员就属于类的成员了,被所有对象共享. new 对象: 每次 ...

  5. python企业微信群聊_python调用企业微信接口发送群聊消息代码参考

    # Author: sea 2019 import requests import json import time class WebchatUtil: corpid = '必须填写你自己申请的' ...

  6. Thinkphp6调用企业微信官方php版本接口方法

    因为业务需要对接企业微信,准备使用Thinkphp6开发,直接使用企业微信官方接口.原计划在企业微信接口类文件中全部定义命名空间,但是并没有成功(因为文件在嵌套调用,可能是没有全部命名的原因). 1. ...

  7. 企业微信接口开启收费模式,意在第三方生态健康发展

    企业微信官方在5月9日一篇"面向服务商进行收费模式调整的说明",在服务商中一石激起千层浪,引发不少的讨论,此次企业微信官方意在何处,对于服务商与企业用户又会出现什么影响. 首先我们 ...

  8. vue调用企业微信扫码接口

    准备工作 -企业微信授权 见企业微信官方网站:https://developer.work.weixin.qq.com/document/path/90513 前端 test01.vue 1. 引入j ...

  9. 企业微信api接口调用-企业微信好友收发消息

    企业微信api消息接口调用-企业微信好友收发消息 /** * 给企业微信好友发消息 * @author wechat:happybabby110 * @blog http://www.wlkankan ...

最新文章

  1. withRouter组件
  2. 上周回顾:赛门铁克失足 微软开源对骂
  3. linux命令基本格式教程,Linux命令基本格式(详解版)
  4. 微信小程序 点击按钮 退出
  5. SCOM 2012知识分享-9:配置警报解决状态
  6. vs2017 js cordova + dotnet core 开发app
  7. SpringBoot项目如何进行打包部署
  8. 存数组元素的个数_HashMap1.8之后为什么要采用数组+链表+红黑树的储存方式?
  9. java 入门面试题
  10. Uiautomator入门(初学者用)
  11. 信息论与编码2 BCH码的构造
  12. ubuntu20.04安装ROS极简教程 (noetic)
  13. 海康服务器找不到网卡驱动,驱动技巧:解决设备管理器中找不到网卡的问题
  14. 微信公众号之免登陆快速入门
  15. 聊聊H5浏览器实现扫一扫
  16. 解决服务器内存被pc微信占满,微信占内存的解决方案终于出现了
  17. 后端线上服务监控与报警方案
  18. Build A City——Floorplan
  19. 计算机动漫与游戏制作与影视,中职中专计算机动漫与游戏制作专业系列教材·动画与影视后期制作:After Effects CS4技能应用教程...
  20. Aaron Swartz:如何提高效率

热门文章

  1. C语言中fclose函数
  2. C++——文件指针定位--fseek,ftell
  3. rust php 扩展,在PHP程序中使用Rust扩展的方法_PHP
  4. 喜报丨云和恩墨MogDB数据库与华为Taishan服务器完成兼容性认证
  5. IPFS直播最详细解读—FileCoin Demo演示
  6. UVM:3.4.1 设置打印信息的冗余度阈值
  7. Golang - [Iris] 日志写入与日志分割
  8. 2021-06-22Android模拟器
  9. Allegro按照板框边沿敷铜并进行内缩和外扩
  10. 【转】Apache Http Server与Tomcat实现负载均衡和集群