Inhalt einer Mysql Zelle ausgeben Python

Gast #6390682
Lesenswert?

Guten Abend,
ich spiele gerade zum ersten Mal mit Python 3.
Ich habe eine Mysql Datenbank mit einer Tabelle in der 3 Spalten 
definiert sind. ID TIMESTAMP WERT.
Nun möchte ich mit Python den Inhalt der zuletzt geschriebenen ID Zelle 
ausgeben.

Ich kann mit
1
mycursor = mydb.cursor()
2

3
mycursor.execute("SELECT * FROM raspi16 WHERE ID = (SELECT MAX(ID) FROM raspi16)") 
4
myresult = mycursor.fetchall()
5
print(myresult)
6
print"-------------------------------------------------------------------------------------------"

Den inhalt aller zu letzt geschriebenen Zeile ausgeben aber ich möchte 
nur den Inhalt von der ID Zelle ausgeben.
Gast #6390769
Lesenswert?

Gebe mal ein Beispiel was du genau haben willst.

Folgende Beispieltabelle:

ID |  TIMESTAMP         | WERT
------------------------+-----
1  | 2020-01-01 01:01:00| 10
2  | 2020-11-11 11:11:11| 20
3  | 2020-01-01 01:01:00| 30


Was willst du jetzt als Ergebniss?
ID
---
3

Genau das liefert
select MAX(ID) from raspi16;

Willst du die ID die nach Timestamp am aktuellsten ist wäre das
ID
2


BTW: Es ist eine schlechte Idee eine Spalte nach einem SQL-Befehl/Typ zu 
benennen. Nenn es "Zeitstempel" oder sonst irgendwie das nicht Teil der 
SQL-Syntax ist.
Gast #6390922
Lesenswert?

Guten Morgen,
Sorry war gestern wohl schon zu betrunken:/

Rausprüfer schrieb:
> Was willst du jetzt als Ergebniss?
> ID
> ---
> 3

Ja genau das möchte ich! Danke

Heiner schrieb:
> Das ist - wie immer - keine Beschreibung eines Problems. Ein sinnvolles
> Schema ist:
> - Was hast du gemacht?
> - Was hast erwartet, was passieren sollte?
> - Was ist stattdessen passiert?

Sorry aber ich war gestern nicht mehr ganz klar im Kopf.
Also es funktioniert fast so wie es funktionieren soll.
Mein Skript
1
print"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"  
2
mycursor.execute("select MAX(ID) from raspi16")
3
myresult = mycursor.fetchall()
4
print(myresult)
5
print"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
6
mydb.close()
liefert
1
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2
[(35,)]
3
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Ich möchte aber die Klammern und das Komma weg haben.
Danke für die Hilfe
Gast #6391129
Lesenswert?

python_Anfänger schrieb:
> Ich möchte aber die Klammern und das Komma weg haben.
1
print(myresult[0][0])

Auch wenn du nur einen einzigen Wert bekommst: Das Ergebnis der 
Datenbankabfrage hat Zeilen und Spalten. Python macht daraus eine Liste 
von Tupeln. Meine Empfehlung wäre, einmal folgendes im CLI 
auszuprobieren:
1
myresult = [(35,)]
2
type(myresult)
3
myresult[0]
4
type(myresult[0])
5
myresult[0][0]
6
type(myresult[0][0])

Die dynamische Typisierung von Python ist oft eine praktische Sache. Die 
Folge ist allerdings, dass man sich selbst mehr Gedanken über Datentypen 
machen muss.
Gast #6391202
Lesenswert?

IT-Abteilung schrieb:
> Codo schrieb:
>> So weit ich weiss, wird in Python eine Zeile NICHT mit Semikolon
>> beendet.
>
> MUSS nicht, aber es geht und sieht meiner Meinung nach ordentlicher aus.

Es ist aber gar kein Python-, sondern SQL-Code. Wenn ein einzelner 
Befehl mit einer Client-Library ausgeführt wird, kann man das Semikolon 
weglassen, der Befehl wird ja ohnehin gequotet.
Gast #6391338
Lesenswert?

Ingo D. schrieb:
> Du bekommst ein Array zurück

Nein. Er bekommt eine Liste von Tupeln, beides native Datentypen von 
Python.

https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range

Arrays gibt es in Python nicht nativ. NumPy hat so etwas (ndarray), aber 
das ist definitiv nicht der Typ, den fetchall zurückgibt:

https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html
#6391815
Lesenswert?

python_Anfänger schrieb:
> Kann mir Jemand ein Gutes Buch empfehlen um Python zu lernen?

Wenn Du ein totaler Einsteiger bist und keine bis wenig Erfahrung mit 
anderen Sprachen hast, aber auch nicht so sehr tief einsteigen möchtest, 
ist die "For Dummies"-Serie immer ganz gut. Da gibt es eine ganze Reihe 
von Python-Büchern, such' Dir einfach eines aus und spiel' mit den 
Beispielen herum, dann kommst Du sicher schnell hinein.

Ansonsten ist man, wenn man etwas Seriöses zu Softwarethemen sucht, 
meistens beim Verlag O'Reilly ganz gut aufgehoben, aber gerade für 
Python gibt es dort so viel...

Mein Einstieg (vor vielen Jahren) waren "Learning Python" und danach 
"Programming Python", beide O'Reilly von Mark Lutz. Ein wenig trocken, 
aber für Menschen mit ein wenig Vorerfahrung (ich kam damals 
skriptsprachenseitig von Perl) gut geeignet. Für einige weitere Tipps 
und Tricks passen dazu der "Hitchhiker's Guide to Python" und das 
"Python Cookbook".

Ebenfalls bei O'Reilly erschienen ist "Programmieren lernen mit Python" 
von Allen B. Downey, und wer es etwas verspielter, aber didaktisch 
hervorragend aufbereitet und schnell vom Anfänger zum Intermediate 
werden mag, probiert "Python von Kopf bis Fuß" aus. Beide Bücher kenne 
ich selbst zwar nicht, allerdings habe ich von beiden viel Gutes gehört, 
und die "von Kopf bis Fuß"-Serie hat sich mittlerweile einen sehr guten 
Ruf erarbeitet.

Wenn Du ein bisschen Python-Erfahrung gesammelt hast und wirklich in die 
Tiefen gehen willst, gibt es neben Büchern zu allerlei Spezialthemen 
(Datenverarbeitung mit Pandas, Webentwicklung mit Django und Flask, ...) 
auch noch ein besonderes Buch namens "Fluent Python", das auch für sehr 
erfahrene Pythonistas viele wertvolle Ideen und Anregungen liefert.

Worauf Du achten solltest, ist, daß das gewählte Buch Python3 behandelt. 
Und das solltest Du auch benutzen, denn die Vorversion Python2 ist zwar 
hin und wieder noch im Einsatz, aber mittlerweile veraltet. Auch wenn 
die Unterschiede nicht sehr groß sind: Python3 ist die Zukunft...

HTH, viel Spaß und Erfolg! ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren