Hi I’m trying to upload data to a dataset using Python Script. The script return 200 code and when I look at the dataset the row were created but with NULL DATA. Can you please help me to identify why the script is uploading NULL data instead of real data. Here is the script: By the way I try different encoder for the data too
import csv
import openpyxl
import xlrd
import os
import requests
import requests_oauthlib
import time
import mimetypes
import pandas as pd
from requests_toolbelt.multipart.encoder import MultipartEncoder
from oauthlib.oauth2 import BackendApplicationClient
BASE_URL = ‘MYSERVER URL’
os.chdir(‘CURRENTPATH’)
Extracting data from Excel File
filename = r’PATH TO MY XLSX FILE’
sheetname = ‘Sheet1’
column_names = [‘Year’,‘Quarter’,‘Team’,‘FindingArea’,‘FindingCount’]
excel_read = pd.read_excel(filename, sheet_name=sheetname, usecols=column_names)
num_rows = excel_read.shape[0]
num_cols = excel_read.shape[1]
Converting data from Excel to CSV
csvData = []
for row in range(0, num_rows):
row_list=[]
for col in range(0, num_cols):
row_list.append(excel_read.iloc[row][col])
csvData.append(row_list)
Saving CSV file locally
csvFileName = r’PATH TO csv FILE’
with open(csvFileName, ‘w’, newline = ‘’) as csvFile:
writer = csv.writer(csvFile)
writer.writerows(csvData)
csvFile.close()
import_url = BASE_URL+’/api/dataset/import/6’
basename = os.path.basename(csvFileName)
mimetype = mimetypes.guess_type(basename)
print(basename)
print(mimetype)
‘’‘encoder = MultipartEncoder({
‘dataSetId’ : “6”,
‘files’ : (basename, open(csvFileName, ‘rb’), mimetype),
‘overwrite’ : “1”,
‘csvImport_1’ : ‘11’,
‘csvImport_2’ : ‘12’,
‘csvImport_3’ : ‘13’,
‘csvImport_4’ : ‘14’,
‘csvImport_5’ : ‘15’,
})
‘’’
formdata = {
‘overwrite’: 1,
‘csvImport_1’: 11,
‘csvImport_2’: 12,
‘csvImport_3’: 13,
‘csvImport_4’: 14,
‘csvImport_5’: 15,
}
print(formdata)
#Getting Connection to API
def GetAccessToken():
access_token_url = BASE_URL+’/api/authorize/access_token’
client_id = ‘CLIENTID’
client_secret = ‘CLIENT SECRET’
client = BackendApplicationClient(client_id=client_id)
oauth = requests_oauthlib.OAuth2Session(client=client)
token = oauth.fetch_token(token_url = access_token_url, client_id=client_id, client_secret=client_secret)
auth = ‘Bearer ’ + token[u’access_token’]
return auth
token = GetAccessToken()
Uploadind Data to Xibo
result = requests.post(import_url, files={‘files’:open(csvFileName, ‘rb’)}, headers={‘Authorization’: token}, data=formdata)
#result = requests.post(import_url, headers={‘Authorization’ : token, ‘Content-Type’ : encoder.content_type}, data=encoder)
#print(result)