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

Code: Alles auswählen

# das Komma ist wichtig!
wert, = cursor.fetchone()

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

Code: Alles auswählen

# das Komma ist wichtig!
wert, = cursor.fetchone()
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. :oops:

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

Code: Alles auswählen

# das Komma ist wichtig!
wert, = cursor.fetchone()
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 :)