Seite 1 von 1

In eine MariaDB einen Datensatz mit nur einem Feld einfügen

Verfasst: Donnerstag 6. Mai 2021, 17:46
von ESP8266Schwabe
Moin,

Code: Alles auswählen

cur.execute("INSERT INTO balkonkw VALUES (power)", (powerwert))
bringt mir einen Syntaxfehler.

An anderer Stelle habe ich gelesen, dass es daran läge, dass ich versuche nur einen Wert zu übergeben.
Man müsse das ohne "INSERT INTO" machen.

Wie wäre denn der genaueSyntax dafür. Ich finde einfach kein einziges Beispiel, bzw. irgend ein HowTo wie man einen Datensatz mit einem Feld einfügt.

Re: In eine MariaDB einen Datensatz mit nur einem Feld einfügen

Verfasst: Donnerstag 6. Mai 2021, 17:58
von sparrow
Was sagt denn die Dokumentation wie das geht?

Re: In eine MariaDB einen Datensatz mit nur einem Feld einfügen

Verfasst: Donnerstag 6. Mai 2021, 19:02
von narpfel
@ESP8266Schwabe: Achtung, nicht die Klammer macht das Tupel, sondern das Komma. Ohne Komma kein Tupel.

Re: In eine MariaDB einen Datensatz mit nur einem Feld einfügen

Verfasst: Donnerstag 6. Mai 2021, 19:21
von ESP8266Schwabe
Ich tu mir mit dem Englisch schwer (wegen der verlinkten Dokumentation).

Ein funktionierendes Beispiel finde ich nirgends. Habe hier und da Kommas gesetzt, oder auch nicht. Klammern und Bezeichnungen getauscht.

Habe aber einen Kumpel der gut im Programmieren ist. Dem schick ich jetzt mein Problem.

Ich werde dann hier die Lösung posten.

Re: In eine MariaDB einen Datensatz mit nur einem Feld einfügen

Verfasst: Donnerstag 6. Mai 2021, 19:37
von Sirius3
Es sollte `cursor` heißen, nicht `cur`. Der richtige SQL-Ausdruck ist `INSERT INTO balkonkw (power) VALUES (%s)` wobei balkonkw so aussieht, als ob Du eigentlich Informationen in den Tabellennamen hineinkodiert hast, anstatt dafür eine Tabellenspalte zu verwenden. Nur power in einer Tabelle zu speichern ist nicht sehr sinnvoll. Wie sieht denn Dein Datenbankdesign aus?

Alles in allem müßte das so aussehen:

Code: Alles auswählen

cur.execute("INSERT INTO balkonkw (power) VALUES (%s)", (powerwert,))

Re: In eine MariaDB einen Datensatz mit nur einem Feld einfügen

Verfasst: Donnerstag 6. Mai 2021, 21:42
von ESP8266Schwabe
Ich habe alles durchprobiert. Diese Variante natürlich nicht.

Danke für die Lösung!

In meiner Tabelle gibt es 3 Felder. Die 'id' als Primärschlüssel, den 'power' in dem ich die Leistung speichere und einen 'timestamp' mit demselben.

Das Script rufe ich auf meinem Raspberry pi (der sowieso 24/7 läuft) mit einem Cronjob alle 5 Minuten auf.

Mehr Daten brauch ich nicht. Die Steckdose, welche mir den Power Wert liefert, hätte noch eine Temperatur im Angebot, brauch ich aber nicht.

Die Tabelle werde ich über eine lokale Webseite auswerten.

Der powerwert kommt übrigens aus einem mystrom switch, der kann ein Solarkraftwerk überwachen. Bisher in der Cloud des Herstellers. Das will ich ändern.