简道云api增删改查的类—python书写

本文详细介绍了如何使用Python语言来实现对简道云数据的增删改查操作,通过示例代码展示具体的实现过程,适合后端开发者参考学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# -*- coding:utf-8 -*-
import requests
import json
import datetime,time
import math
from jdy_util.sql_util import MySQLUtil,Mysql_jdy_utils

class APIUtils:
    WEBSITE = "https://api.jiandaoyun.com"
    RETRY_IF_LIMITED = True

    # 构造函数
    def __init__(self, appId, entryId, api_key):
        self.url_get_widgets = APIUtils.WEBSITE + '/api/v1/app/' + appId + '/entry/' + entryId + '/widgets'
        self.url_get_data = APIUtils.WEBSITE + '/api/v1/app/' + appId + '/entry/' + entryId + '/data'
        self.url_retrieve_data = APIUtils.WEBSITE + '/api/v1/app/' + appId + '/entry/' + entryId + '/data_retrieve'
        self.url_update_data = APIUtils.WEBSITE + '/api/v2/app/' + appId + '/entry/' + entryId + '/data_update'
        self.url_create_data = APIUtils.WEBSITE + '/api/v2/app/' + appId + '/entry/' + entryId + '/data_create'
        self.url_delete_data = APIUtils.WEBSITE + '/api/v1/app/' + appId + '/entry/' + entryId + '/data_delete'
        self.api_key = api_key

    # 带有认证信息的请求头
    def get_req_header(self):
        return {
            'Authorization': 'Bearer ' + self.api_key,
            'Content-Type': 'application/json;charset=utf-8'
        }

    # 发送http请求
    def send_request(self, method, request_url, data):
        headers = self.get_req_header()
        if method == 'GET':
            res = requests.get(request_url, params = data, headers = headers, verify = False)
        if method == 'POST':
            res = requests.post(request_url, data = json.dumps(data), headers = headers, verify = False)
        result = res.json()
        if res.status_code >= 400:
            if result['code'] == 8303 and APIUtils.RETRY_IF_LIMITED:
                # 5s后重试
                time.sleep(5)
                return self.send_request(method, request_url, data)
            else:
                raise Exception('请求错误!', result)
        else:
            return result

    # 获取表单字段
    def get_form_widgets(self):
        result = self.send_request('POST', self.url_get_widgets, {})
        return result['widgets']

    # 根据条件获取表单中的数据
    def get_form_data(self, dataId, limit, fields, data_filter):
        result = self.send_request('POST', self.url_get_data, {
            'data_id': dataId,
            'limit': limit,
            'fields': fields,
            'filter': data_filter
        })
        print("这是get_form_data根据查询参数查到的简道云表单的数据:",result)
        return result['data']

    # 获取表单中满足条件的所有数据
    def get_all_data(self, fields, data_filter):
        form_data = []

        # 递归取下一页数据
        def get_next_page(dataId):
            data = self.get_form_data(dataId, 100, fields, data_filter)
            if data:
                for v in data:
                    form_data.append(v)
                dataId = data[len(data) - 1]['_id']
                get_next_page(dataId)

        get_next_page('')
        return form_data

    # 检索一条数据
    def retrieve_data(self, dataId):
        result = self.send_request('POST', self.url_retrieve_data, {
            'data_id': dataId
        })
        return result['data']

    # 创建一条数据
    def create_data(self, data):
        result = self.send_request('POST', self.url_create_data, {
            'data': data,
            "is_start_trigger": True
        })
        return result['data']

    # 更新数据
    def update_data(self, dataId, data):
        result = self.send_request('POST', self.url_update_data, {
            'data_id': dataId,
            'data': data,
            "is_start_trigger": True
        })
        return result['data']

    # 删除数据
    def delete_data(self, dataId):
        result = self.send_request('POST', self.url_delete_data, {
            'data_id': dataId,
            "is_start_trigger": True
        })
        return result

    # 根据关键字段获取数据
    def get_dataId(self, data_filter):  # 根据字段的值查询dataid
        form_dataId = []
        result = self.get_form_data(None,100,None,data_filter)
        if result:
            for v in result:
                temp_dataId = v['_id']
                # print('v中的dataId:', temp_dataId)
                form_dataId.append(temp_dataId)
                # print('添加后的form_dataId:', form_dataId)

        print("这是根据查询参数查到的简道云表单的dataID:", form_dataId)

        return form_dataId

    # 根据关键字段获取数据,这段代码是调试原来搜索错误的时候,想运用这一个进行纠错的,先放这儿,不删除
    def get_dataId_from_dataid_and_filter(self, data_id, data_filter):  # 根据字段的值查询dataid
        form_dataId = []
        print("这是get_dataId_from_dataid_and_filter根据查询参数查到的简道云表单的data_filter:",data_filter)
        result = self.get_form_data(data_id,100,None,data_filter)
        print("这是get_dataId_from_dataid_and_filter根据查询参数查到的简道云表单的result:",result)
        if result:
            for v in result:
                temp_dataId = v['_id']
                # print('v中的dataId:', temp_dataId)
                form_dataId.append(temp_dataId)
                # print('添加后的form_dataId:', form_dataId)

        print("这是get_dataId_from_dataid_and_filter根据查询参数查到的简道云表单的dataID:", len(form_dataId))

        return form_dataId

    def get_form_data_from_dataId(self, dataId, limit):
        result = self.send_request('POST', self.url_get_data, {
            'data_id': dataId,
            'limit': limit
        })
        return result['data']

    '''根据data_filter的值查找所有的dataid'''
    def get_all_dataId(self, data_filter):
        form_dataId = self.get_dataId(data_filter)
        print("这里是get_all_dataId第一步所取的长度:",len(form_dataId))
        if len(form_dataId) == 100:
            print("执行了dataid长度等于100的代码")
            temp_dataId = form_dataId[len(form_dataId) - 1]
            print("get_form_data:",temp_dataId)

            # 递归取下一页数据
            def get_next_page(temp_dataId,data_filter):
                data = self.get_dataId_from_dataid_and_filter(temp_dataId, data_filter)
                print('get_next_page查询的data:', data)
                if len(data)==100:
                    for v in data:
                        temp_dataId = v
                        # print('v中的dataId:', temp_dataId)
                        form_dataId.append(temp_dataId)
                        # print('添加后的form_dataId:', form_dataId)
                    get_next_page(temp_dataId,data_filter)
                elif data:
                    for v in data:
                        temp_dataId = v
                        # print('v中的dataId:', temp_dataId)
                        form_dataId.append(temp_dataId)
                        # print('添加后的form_dataId:', form_dataId)
                    return form_dataId
            form_dataId = get_next_page(temp_dataId,data_filter)
        print("这是根据查询参数查到的简道云表单的所有dataID的长度:", len(form_dataId))
        return form_dataId

    '''修改,先根据filter的值进行查找,再一一修改'''
    def update_from_filter(self, data, data_filter):
        # 判断查找的结果是否为空,如果不为空,则修改
        form_dataId = self.get_all_dataId(data_filter)
        if form_dataId:
            num_update = 0
            for dataId in form_dataId:
                print(dataId)
                self.update_data(dataId, data)
                num_update += 1
            print("修改的数据数:",num_update)
            return num_update
        # 返回修改的条数

    '''修改或新增,先根据data_filter的值进行查找,有则修改,无则新增'''
    def update_or_create(self, data, data_filter):
        # 判断查找的结果是否为空,如果不为空,则修改
        form_dataId = self.get_all_dataId(data_filter)
        if form_dataId:
            num_update = 0
            for dataId in form_dataId:
                print(dataId)
                self.update_data(dataId, data)
                num_update += 1
            print("修改的数据数:",num_update)
            return num_update
        # 返回修改的条数

        else:
            # self.create_data(data)
            result = self.create_data(data)
            print('新增数据:',result)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星星之火

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值