Seite 1 von 1
MySQL Datensatz auslesen und in Variable speichern
Verfasst: Mittwoch 2. Mai 2018, 15:13
von tzabbi
Moin Leute,
ich möchte Ein "Alarmsystem" basteln und deshalb die Tempertur und Luftfeuchtigkeitsdaten aus einer mySQL-Datenbank ziehen.
Das klappt auch ganz gut.
Jetzt hab ich nur die Frage wie ich diese Variable in einen Integer umwandeln kann, sodass ich damit rechnen kann.
Hier mein Skript:
Code: Alles auswählen
import mysql.connector as mc
connection = mc.connect(host = "host"
user = "user"
passwd = "passwd"
db = "database"
cursor.connection.cursor()
cursor.execute("""SELECT temp from daten LIMIT 1""")
result = cursor.fetchall()
cursor.close()
print result
Als Ergebnis bekomme ich immer dann "[(26.2,)]"
Wie kann ich nur die "26.2" in eine Variable speichern und damit rechnen?
Gruß
tzabbi
Re: MySQL Datensatz auslesen und in Variable speichern
Verfasst: Mittwoch 2. Mai 2018, 16:16
von __deets__
fetchall liefert *ALLE* Ergebniss, und damit immer eine Liste. Wenn du nur eine Zeile brauchst oder bekommst, kanns du stattdessen fetchone verwenden. Damit bleibt dann eine Zeile ueber, und die ist IMMER ein Tupel, also eine Aufzaehlung von Werten. Auch wenn es nur einer ist. Du musst da also dann drauf zugreifen, zb mit
Re: MySQL Datensatz auslesen und in Variable speichern
Verfasst: Mittwoch 2. Mai 2018, 19:27
von Sirius3
@tzabbi: zusätzlich, zu dem was __deets__ geschrieben hat, Datensätze in einer Tabelle haben keine Reihenfolge, `LIMIT 1` liefert also eine zufällige Temperatur (auch bei Datenbanken sind kryptische Abkürzungen nichts zu suchen, als `temperature` statt `temp`). Also brauchst Du irgendein Sortierkriterium.
Re: MySQL Datensatz auslesen und in Variable speichern
Verfasst: Donnerstag 3. Mai 2018, 06:25
von tzabbi
__deets__ hat geschrieben:fetchall liefert *ALLE* Ergebniss, und damit immer eine Liste. Wenn du nur eine Zeile brauchst oder bekommst, kanns du stattdessen fetchone verwenden. Damit bleibt dann eine Zeile ueber, und die ist IMMER ein Tupel, also eine Aufzaehlung von Werten. Auch wenn es nur einer ist. Du musst da also dann drauf zugreifen, zb mit
Super Vielen Dank!
Das mit dem Komma war echt ein guter Hinweis.
Re: MySQL Datensatz auslesen und in Variable speichern
Verfasst: Donnerstag 3. Mai 2018, 06:26
von tzabbi
Sirius3 hat geschrieben:@tzabbi: zusätzlich, zu dem was __deets__ geschrieben hat, Datensätze in einer Tabelle haben keine Reihenfolge, `LIMIT 1` liefert also eine zufällige Temperatur (auch bei Datenbanken sind kryptische Abkürzungen nichts zu suchen, als `temperature` statt `temp`). Also brauchst Du irgendein Sortierkriterium.
Ja sehe es grad, hab das "Order by" vergessen.
Re: MySQL Datensatz auslesen und in Variable speichern
Verfasst: Donnerstag 3. Mai 2018, 06:42
von tzabbi
__deets__ hat geschrieben:fetchall liefert *ALLE* Ergebniss, und damit immer eine Liste. Wenn du nur eine Zeile brauchst oder bekommst, kanns du stattdessen fetchone verwenden. Damit bleibt dann eine Zeile ueber, und die ist IMMER ein Tupel, also eine Aufzaehlung von Werten. Auch wenn es nur einer ist. Du musst da also dann drauf zugreifen, zb mit
Wenn ich jetzt den Ganzen Datensatz auslesen möchte und damit die Liste mehere Einträge bekommt, wie kann ich dann die einzelnen Werte aus der Liste auswählen? "result[n]," bringt mir eine Fehlermeldung.
Re: MySQL Datensatz auslesen und in Variable speichern
Verfasst: Donnerstag 3. Mai 2018, 08:57
von __deets__
Dann hast du das mit dem Komma noch nicht verstanden. Schau mal nach dem Begriff tuple unpacking — das erkärt das.
Re: MySQL Datensatz auslesen und in Variable speichern
Verfasst: Donnerstag 3. Mai 2018, 10:24
von tzabbi
Danke