Python实现企业微信Token自动获取到SQLite存储

背景

我们有很多跟企业微信对接数据集成的项目,企微的access_token是有有效期的,一个应用的token可能会多个任务共用,实现了一个工具类来保存access_token

环境准备

  • Python 3.6+
  • 所需库:
    • requests(用于HTTP请求)
    • sqlite3(Python内置数据库操作)

3. 实现方案

数据库设计

我们使用SQLite作为Token存储方案,具有以下优点:

  • 单文件数据库,无需额外服务
  • 轻量级,适合小型应用
  • 支持基本的SQL操作

直接上代码

python 复制代码
#-*- coding:utf-8 -*-
#Author:Evan
#Mail:evan#chengwenit.com

#管理企微应用token

import requests
import cjcconfig
import time
import chw_sqllite_client

class workwechatapp():
    # 从企业微信获取token写入sqllite数据库的app表
    def get_qwtoken_cjcdb(self,corpid,appsecret,appname):
        """
        获取企业微信应用access_token
        appsecret:应用密钥
        appid:应用id
        return:access_token
        """
        params = {'corpId': corpid,
                'corpSecret': appsecret}
        response = requests.get(url=cjcconfig.get_token_url,params=params)
        if response.status_code == 200:
            response = response.json()
            if response['errcode'] == 0:
                print('获取token成功')
                sql = chw_sqllite_client.sqllitToolSql(cjcconfig.sqldbname)
                sql.execute("REPLACE INTO chw_qw_app (appsecret,apptoken,synctime,memo) values(?,?,?,?);",(appsecret,response['access_token'],str(time.time()),appname))
                if sql.execute:
                    print("更新token成功")
                    sql.close()
                    return True
                else:
                    print("更新token失败")
                    sql.close()
                    return False
            else:
                print('获取token失败')
                return False
        else:
            print('请求失败')
            return False   

    # 根据appname从sqllite数据库企微APP表中获取token
    def get_cjc_qw_app_token(self,appname):
        # 获取企业微信token
        sql = chw_sqllite_client.sqllitToolSql(cjcconfig.sqldbname)
        res = sql.query("select apptoken from chw_qw_app where memo=?;",(appname,))
        if res is None:
            return False
        else:
            return res[0][0]

if __name__ == "__main__":
    """
    测试代码
    """

    # 从企业微信获取token更新到sqllite中
    #x = workwechatapp()
    #applist = cjcconfig.applist
    #for i in range(len(applist)):
    #    x.get_qwtoken_cjcdb(cjcconfig.corpId,applist[i]["appsecret"],applist[i]["appname"])
    ## 从sqllite中获取token
    #a = x.get_cjc_qw_app_token("企微通讯录")
    #b = x.get_cjc_qw_app_token("企微成集云")
    #print(a)
    #print(b)
    ```
## 注意事项
- Token过期处理
- 数据库文件权限
- 并发访问考虑
- 错误处理与重试机制
相关推荐
花妖大人25 分钟前
Python和LLM问题
python·llm
不喜欢学数学er1 小时前
算法第五十三天:图论part04(第十一章)
开发语言·python·图论
你怎么知道我是队长1 小时前
python---构造函数、析构函数
开发语言·python
CF14年老兵1 小时前
深入浅出 Python 一等函数:一份友好的全面解析
后端·python·trae
jumin18061 小时前
python采用jdbc连接oracle
python·oracle
励志五个月成为嵌入式糕手2 小时前
0820 SQlite与c语言的结合
c语言·oracle·sqlite
君万2 小时前
【go语言】字符串函数
爬虫·python·golang
captainOO72 小时前
MRO and mixin in Python Django
后端·python·django
小磊哥er3 小时前
【办公自动化】如何使用Python库高效自动化处理图像?
python
蔗理苦3 小时前
2025-08-22 Python进阶10——魔术方法
开发语言·python