Контекст: Я написал приведенные ниже функции python для получения данных от стороннего API, загрузки данных в SQL Server, а также для выполнения итеративных пост-запросов к API PowerBI для динамического обновления набора потоковых данных. Я следил за демонстрациями здесь & здесь .
Вопросы: Данные успешно загружаются в SQL Server. Тем не менее, почтовые запросы к API PowerBI не выполняются, и из-за нижеприведенных блоков python я не вижу код ответа или сообщение об ошибке. Может кто-нибудь, пожалуйста, посмотрите и внесите какие-либо предложения относительно того, почему почтовые запросы терпят неудачу? Или какие-либо предложения по устранению неполадок?
import requests
import json
from constantcontact import ConstantContact
from constantcontact import Contact
import os
import pyodbc
import time
REST_API_URL = 'REDACTED'
while True:
def get_tracking_data():
global REST_API_URL
constantcontact = ConstantContact('REDACTED','REDACTED')
campaign = constantcontact.get_campaigns().get_item(0)
response = constantcontact.get_campaign_summary_report(campaign)
with open(r'C:\leadgen_app\tracking_data.txt', 'a+', encoding="utf-8") as tracking_data:
tracking_data.write('{}\n'.format(response))
with open(r'C:\leadgen_app\tracking_data.txt', 'r', encoding="utf-8") as tracking_data2:
filetext = tracking_data2.read()
filetext = filetext.replace("'", '"')
print(filetext)
#Send this JSON object (in filetext_powerbi) to PowerBI service.
filetext_powerbi = filetext
#filetext_powerbi = json.dumps(filetext_powerbi)
#print(filetext_powerbi)
send_to_powerbi = requests.post(REST_API_URL,filetext_powerbi)
print(send_to_powerbi.text)
print("Data posted to Power BI API")
with open(r'C:\leadgen_app\tracking_data_json.txt', 'w', encoding="utf-8") as tracking_data_json:
tracking_data_json.write('{}\n'.format(filetext))
time.sleep(2)
get_tracking_data()
def load_tracking_data():
username = 'REDACTED'
password = 'REDACTED'
tracking_connection = pyodbc.connect("Driver={ODBC Driver 13 for SQL Server};""Server=PC;""Database=leadgen_sandbox;""Username="+username+";""Password="+password+";""Trusted_Connection=yes;")
tracking_connection_cursor = tracking_connection.cursor()
tracking_connection_executesp = "USE leadgen_sandbox EXEC get_tracking_data"
tracking_connection.autocommit = True
tracking_connection_cursor.execute(tracking_connection_executesp)
tracking_connection.close()
print("Data loaded to SQL Server")
load_tracking_data()
def delete_tracking_files():
if os.path.exists(r"C:\leadgen_app\tracking_data.txt"):
os.remove(r"C:\leadgen_app\tracking_data.txt")
else:
print("The file does not exist!")
if os.path.exists(r"C:\leadgen_app\tracking_data_json.txt"):
os.remove(r"C:\leadgen_app\tracking_data_json.txt")
else:
print("The file does not exist!")
delete_tracking_files()
Содержание публикуемого объекта filetext_powerbi выглядит следующим образом. На основании примера JSON PowerBI, показанного на снимке экрана ниже, я подозреваю, что элементы JSON должны быть вложены в словарь в списке, а также, возможно, в симпатичной печатной форме, но я не совсем уверен в этом. Если это так, может кто-нибудь предложить некоторые изменения кода для достижения этой цели?
{"sends": 0, "opens": 0, "clicks": 0, "forwards": 0, "unsubscribes": 0, "bounces": 0, "spam_count": 0}
