Messwert+Zeit in Mysql Datenbank schreiben (Problem beim TYP: Datetime,Float)

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    Kurz zum Projekt:
    Ich messe mit dem Arduino Werte und diese werden über USB an das Raspberry gesendet und dort in eine Mysql Datenbank gespeichert.
    Zusätzlich werden die gemessenen Werte vom Arduino noch in der Datenbank mit einem Zeitstempel verknüpft.
    Das Skript programmiere ich mit Python.
    Später möchte ich noch über eine Internetseite auf die Datenbank des Raspberry Pis zugreifen.


    Mein Pythonsskript funktioniert (siehe unten), allerdings schaffe ich es nur die gemessenen Werte und den Zeitstempel in Strings zu speichern. In der Datenbank sind die Werte und die Zeitstempel also in Typ TEXT gespeichert.

    Leider ist es sehr wichtig, dass ich es hinbekomme die Werte in Typ FLOAT und den Zeitstempel in Typ DATETIME in der Datenbank abzuspeichern..(Benötige ich später für die Webseite)

    Wenn ich ...(ZEITSTEMPEL TEXT,MESSWERT TEXT);") in ...(ZEITSTEMPEL DATETIME,MESSWERT FLOAT);") ändere, dann habe ich das Problem mit ...VALUES (%s,%s)...

    Ich bin am verzweifeln..eigentlich müsste das doch überhaupt kein Problem sein..

    Ich hoffe, jemand kann mir helfen und VIELEN DANK!!!!!

    Einmal editiert, zuletzt von inassar (14. Januar 2015 um 18:55)

  • Messwert+Zeit in Mysql Datenbank schreiben (Problem beim TYP: Datetime,Float)? Schau mal ob du hier fündig wirst!

  • Schreib lieber den Unixtimestamp in die Datenbank, dafür gibts sogar ein MySQL Befehl... Dann kannst du diesen Timestamp in jegliche X-Beliebiges Format bringen oder ganz einfach nur Tage/Stunden was auch immer ausgeben lassen, und musst das nicht erst aufwending umrechnen etc.

    Dein timestamp ist kein wirklicher Zeitstempel

  • Eigentlich erstaunlich, dass ueberhaupt was geht:

    > cursor.execute("INSERT INTO MESSUNG (ZEITSTEMPEL, MESSWERT) VALUES (%s,%s)",(timestamp(),get_wert()))

    Die Textfelder gehoeren gequoted: VALUES ('%s','%s')

    MySQL hat sehr genaue Vorstellungen, was in ein Datumsfeld gehoert: 'YYYY-MM-DD HH:MM:SS'

    Die ganze timestamp-Funktion ist sowieso ueberfluessig, weil MySQL das selber kann:

    Code
    cursor.execute("INSERT INTO MESSUNG (ZEITSTEMPEL, MESSWERT) VALUES (NOW(),'%s')", (get_wert()) )

    Das sieht zwar irgendwie seltsam aus: macht man das in python wirklich mit dem Cursor ??

    Einmal editiert, zuletzt von Tell (14. Januar 2015 um 21:00)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!