SAP Hana Datenbank anbindung
Verfasst: Freitag 8. Juni 2018, 14:49
Hallo zusammen!
Da ich ein Anfänger mit Python bin, ich jedoch ein für mich schwieriges Projekt von der FH bekommen habe und nicht weiter komme, hoffe ich hier Hilfe zu bekommen.
Die Aufgabe des Projektes ist es, dass eine Gruppe Daten an den MQTT-Broker schickt, ich diese Daten von dem MQTT-Broker empfange und diese in die SAP Hana db einfüge. Hinzu kommt, dass ich mit einem RaspberryPI verbunden bin, bzw. dass alles sich auf dem RaspberryPI abspielt.
Mein bisheriger Code:
wenn ich diesen Code ausführen will, kommt folgende Fehlermeldung:
"File "gruppe_5.py", line 24, in <module>
activityId = payload['Activity']['ID']
NameError: name 'payload' is not defined"
ich hoffe jemand kann mir helfen.
Danke im voraus und liebe Grüße
oggie
Da ich ein Anfänger mit Python bin, ich jedoch ein für mich schwieriges Projekt von der FH bekommen habe und nicht weiter komme, hoffe ich hier Hilfe zu bekommen.
Die Aufgabe des Projektes ist es, dass eine Gruppe Daten an den MQTT-Broker schickt, ich diese Daten von dem MQTT-Broker empfange und diese in die SAP Hana db einfüge. Hinzu kommt, dass ich mit einem RaspberryPI verbunden bin, bzw. dass alles sich auf dem RaspberryPI abspielt.
Mein bisheriger Code:
Code: Alles auswählen
import pyhdb
import paho.mqtt.client as mqtt
import xmltodict
import logging
import signal
import sys
MQTT_SERVER = "143.93.197.43"
# Methode zur Ausgabe des Verbindungsstatus zum MQTT-Broker
def on_mqtt_connect(client, userdata, flags, rc):
print("Connected with MQTT-Broker, result code " + str(rc))
client.subscribe("Factory/ColorSorter/Test")
# Methode zum Einfügen der Werte in die Datenbank
def on_mqtt_message_colorsorter(mosq, obj, msg):
payload = xmltodict.parse(msg.payload.decode("utf-8"))
print("Topic: " + msg.topic + ", QoS: " + str(msg.qos) + ", Payload: " + str(msg.payload))
activityId = payload['Activity']['ID']
startDateTime = datetime.datetime.strptime(payload['Activity']['StartDateTime'],"%Y-%m-%dT%H:%M:%SZ")
endDateTime = datetime.datetime.strptime(payload['Activity']['EndDateTime'],"%Y-%m-%dT%H:%M:%SZ")
deviceId = payload['Activity']['DeviceID']
totalAmount = payload['Activity']['CountedBricks']['TotalAmount']
brickId = payload['Activity']['CountedBricks']['Color']['BrickId']
brickDateTime = datetime.datetime.strptime(payload['Activity']['CountedBricks']['Color']['DateTime'],"%Y-%m-%dT%H:%M:%SZ")
name = payload['Activity']['CountedBricks']['Color']['Name']
rgb = payload['Activity']['CountedBricks']['Color']['RGB_Value']
cursor=connection.cursor()
# Hinzufügen der Daten zur Tabelle "Activity"
add_activity = "INSERT INTO `Activity` (`activityId`, `startDateTime`, `endDateTime`, `deviceId`, `totalAmount`) VALUES (%s, %s, %s, %s, %s)"
cursor.execute(add_activity, (activityId, startDateTime, endDateTime, deviceId, totalAmount))
# Hinzufügen der Daten zur Tabelle "Colors_of_Counted_Bricks"
add_colors_of_counted_bricks = "INSERT INTO `Colors_of_Counted_Bricks` (`brickId`, `brickDateTime`, `activityId`) VALUES (%s, %s, %s)"
cursor.execute(add_colors_of_counted_bricks, (brickId, brickDateTime, activityId))
# Hinzufügen der Daten zur Tabelle "Color"
add_color = "INSERT INTO `Color` (`name`, `brickId`, `rgb`) VALUES (%s, %s, %s)"
cursor.execute(add_color, (name, brickId, rgb))
connection.commit()
if __name__== "__main__":
# Herstellen der Verbindung zur Datenbank
try:
connection = pyhdb.connect(host="143.93.203.123",
port=39041,
user="MW220_01",
password="MWW220_01")
except pyhdb.Error as e:
print("Fehler aufgetreten")
#cursor=connection.cursor()
# Herstellen der Verbindung zum MQTT-Broker
client = mqtt.Client()
client.on_connect = on_mqtt_connect
client.message_callback_add("Factory/ColorSorter/Test", on_mqtt_message_colorsorter)
client.username_pw_set("pi", "raspberry")
client.connect("143.93.197.43", 1883, 60)
client.loop_forever()
"File "gruppe_5.py", line 24, in <module>
activityId = payload['Activity']['ID']
NameError: name 'payload' is not defined"
ich hoffe jemand kann mir helfen.
Danke im voraus und liebe Grüße
oggie