ich möchte 2 Werte aus einem SQL Query mit Matplot in einem Balkendiagramm darstellen.
Meine Werte bekomme ich aus der SQL extrahiert, aber wie übergebe ich diese als Tuple an Matplot?
Hier mein Code:
Code: Alles auswählen
import json
import firebirdsql
import pymysql
import matplotlib.pyplot as plt
import numpy as np
def visu(betriebid):
# Parameter für Datenbank aus json lesen
with open('db.json', encoding="utf8") as json_file:
data = json.load(json_file)
# # Verbindung zur Firebird Datenbank herstellen
# fbconn = firebirdsql.connect(
# host=(data['DB_Path']['Server']),
# database=(data['DB_Path']['Pfad']),
# port=(data['DB_Path']['Port']),
# user=(data['DB_Path']['User']),
# password=(data['DB_Path']['Pass']),
# charset='WIN1252'
# )
# Verbindung zur mysql Datenbankparameter
myconn = pymysql.connect(
user=(data['DB_mysql']['User']),
password=(data['DB_mysql']['Pass']),
host=(data['DB_mysql']['Server']),
database=(data['DB_mysql']['Database'])
)
# Helfer_leistungen MD
query: str = "SELECT leistungen.zeitraumid, leistungen.gesamtkgmitfaktor, leistungen.leistung, helfer_zeitraeume.helfernr, helfer_zeitraeume.betriebid \
FROM leistungen \
INNER JOIN helfer_zeitraeume ON helfer_zeitraeume.zeitraumid=leistungen.zeitraumid \
where helfer_zeitraeume.betriebid = '"+str(betriebid)+"' ORDER BY leistungen.leistung DESC LIMIT 20"
print(query)
#### Stunden summiern
#query2: str = "SELECT ZEITRAUMID,Sum(GesamtStunden) As GesamtStunden FROM ( Select tLB.ZeitraumID, Sum(tLB.STUNDEN) As GesamtStunden From Lohnbuchungen tLB Left Join Taetigkeiten tT On tLB.TAETIGKEITID = tT.ID group by tLB.ZEITRAUMID, tT.BUCHUNGSART, tT.BONUSBERECHNUNG, tLB.Datum, BUCHUNGS_STATUS_ID having tT.BUCHUNGSART = 1 And tT.BONUSBERECHNUNG = 1 And tLB.Datum Between '01.08.2021' And '11.08.2021' ) group by ZEITraumid"
# Verbindung zur MYSQL aufbauen
mysql = myconn.cursor()
# excecute query
mysql.execute(query)
result = mysql.fetchall()
#print(result[0])
for row in result:
print (row[3], row[2])
#([hzid, gesamtkgmf, leistung, helfernr, betriebid]) = mysql
#for row in mysql:
# short = row
# (hzid, gesamtkgmf, leistung, helfernr, betriebid) = row
# print(short)
# print(hzid)
# print(gesamtkgmf)
# print(leistung)
plt.title("Top 20 Pflücker")
plt.bar(result[3], result[2])
plt.xlabel('Helfernummer')
plt.ylabel('kg/Std')
plt.show()
myconn.commit()
myconn.close()
Es wäre echt nett wenn mir jemand den entscheidenen Tip geben könnte