import os import pandas as pd import requests import time def data_to_json(data: pd.DataFrame): data_list = [] for _, row in data.iterrows(): json_str = row.to_json() data_list.append(json_str) return data_list class DataAPIRequester: def __init__(self, target, params=None): self.endpoint = 'https://us-east-1.data.tidbcloud.com/api/v1beta/app/dataapi-LXLoOkXt/endpoint/v1/' self.url = self.endpoint + target self.params = params or {} self.public_key = os.getenv('DATA_API_PUBLIC_KEY') self.private_key = os.getenv('DATA_API_PRIVATE_KEY') def get_data(self): auth = requests.auth.HTTPDigestAuth(self.public_key, self.private_key) response = requests.get(self.url, auth=auth, params=self.params) time.sleep(1) return response.json()['data']['rows'] def send_data(self, data: pd.DataFrame): data_list = data_to_json(data) headers = {'content-type': 'application/json'} auth = requests.auth.HTTPDigestAuth(self.public_key, self.private_key) for row in data_list: response = requests.post(self.url, headers=headers, auth=auth, data=row) # TODO: judgement of result.code if response.status_code != 200: print(response.text) time.sleep(1) return response.status_code