«TypeError: Объект типа« байты »не поддерживает сериализацию в формате JSON». - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь транслировать данные в Power Bi из Python. Однако я сталкиваюсь с ошибкой

TypeError: Объект типа 'bytes' не поддерживает сериализацию в формате JSON

Я поместил свой код ниже, пожалуйста, укажите, что я делаю неправильно, поскольку я не совсем понимаю, в чем проблема.

import pandas as pd
from datetime import datetime
from datetime import timedelta
import requests
import json
import time
import random

# function for data_generation

def data_generation():
    surr_id = random.randint(1, 3)
    speed = random.randint(20, 200)
    date = datetime.today().strftime("%Y-%m-%d")
    time = datetime.now().isoformat()

    return [surr_id, speed, date, time]


if __name__ == '__main__':

    REST_API_URL = 'https://api.powerbi.com/beta/513294a0-3e20-41b2-a970-6d30bf1546fa/datasets/f9e99f4c-a928-4599-8551-569997994c1c/rows?key=pbw8cHmVzC9EYGFhyXiFrMlrlIGPhQdqms3CednMDq4d%2BygPOwpxD%2BeqzT9vQVF7sJLEwgACfsIq2v7JtRzVdg%3D%3D'

    while True:
        data_raw = []
        for j in range(1):
            row = data_generation()
            data_raw.append(row)
            print("Raw data - ", data_raw)

        # set the header record
        HEADER = ["surr_id", "speed", "date", "time"]

        data_df = pd.DataFrame(data_raw, columns=HEADER)
        data_json = bytes(data_df.to_json(orient='records'), encoding='utf-8')
        print("JSON dataset", data_json)

        # Post the data on the Power BI API
        try:
            req = requests.post(REST_API_URL, data=json.dumps(
                data_json), headers=HEADER, timeout=5)
            print("Data posted in Power BI API")
        except requests.exceptions.ConnectionError as e:
            req = "No response"
            print(req)

        time.sleep(3)

1 Ответ

0 голосов
/ 10 апреля 2019

Решено, Только что изменено req = requests.post(REST_API_URL, data=json.dumps(data_json), headers=HEADER, timeout=5) на req = requests.post(url=REST_API_URL, data=data_json)

...