pH Wert per Python in MySQL Datenbank eintragen

  • Hallo zusammen,

    Ich baue mir gerade einen AQuarienvomuter.
    Dazu lasse ich u.a. den pH Wert ermitteln. Dazu nutze ich das Raspberry Pi Rapid Development Shield zusammen mit pH Circuit und einer pH Sonde.
    Dies funktioniert auch alles soweit.
    Ergebnis meines Scripts:

    Code
    root@APiP:/home/pi/scripts/APiP/sensoren# ./pH.py
    pH Wert des Aquariums testen...
    7.77
    7.77
    7.77
    7.79


    Der wert wird also (korrekt) ermittelt.
    Auch die Textdatei wird richtig angelegt und der Eintrag vorgenommen.
    Aber der Datenbank eintrag funktioniert nicht.
    Allerdings bekomme ich auch keine Fehlermeldung.
    Was ist falsch? (Bin absoluter Python Anfänger)
    Könnt Ihr euch bitte mal mein Script ansehen und mir sagen, was ich ändern muß?
    Vielen Dank im Voraus!!


    Hier mein Script

    Einmal editiert, zuletzt von cced (22. September 2014 um 00:12)

  • Bei solchen Problemen ist es immer gut, wenn man sich den MySQL-Befehl ausgeben lässt und ihn nicht direkt ausführt.

    Den fertigen Befehl siehst du dir an und erkennst ggf. schon den Fehler. Wenn nicht, kopier ihn und führ ihn direkt in der Datenbank aus.

    Somit kannst du dann eine Fehlerquelle ausschließen.

  • Danke für die Info,
    aber der befehl ist in ordnung, habe ihn 1 zu 1 aus einem anderen funktionierenden Script von mir kopiert und nur die Variablen angepasst. In dem anderen Script wird der DB EIntrag vorgenommen :(

  • Auf die idee bin ich auch eben gekommen :)
    Ausserdem habe ich mal die Einzüge verändert.
    jetzt bekomme ich auch eine MySQL Fehlermeldung.

    Code
    ./pH.py:31: Warning: Data truncated for column 'pH' at row 1
      cur.execute('INSERT INTO A1_pH (pH) VALUES (%s)', (line))

    Die Einzüge sehen jetzt so aus...


  • Leider sehe ich deine Bilder nicht.

    Versuch es mal mit dem Datentypen decimal(4,2).

    Mal den Browser (STRG + F5) aktualisieren... habe den Pfad geändert.

    Was das Feld angeht.. habe ich so ziemlich alles sinvolle durch.
    Varchar, Decimal, Flow.... mit und ohne längenangabe

  • Kannst du mal bitte testweise anstelle der Variable (line) einfach mal eine Zahl manuell eintragen?

    Oder du schnappst dir den fertigen Befehl und führst ihn direkt in der DB aus. Dann kannst du ihn dort anpassen und so versuchen den Fehler zu finden.

    Einmal editiert, zuletzt von Teepo (22. September 2014 um 01:30)


  • Kannst du mal bitte testweise anstelle der Variable (line) einfach mal eine Zahl manuell eintragen?

    Oder du schnappst dir den fertigen Befehl und führst ihn direkt in der DB aus. Dann kannst du ihn dort anpassen und so versuchen den Fehler zu finden.

    cur.execute('INSERT INTO A1_pH (pH) VALUES (%s)', ("7.25"))

    Wird auch nicht eingetragen..
    und wenn ich den Befehl so: INSERT INTO A1_pH (pH) VALUES (%s)', ("7.25"))
    in die db eintrage kommt ein Format fehler...

    Au man.. ich bin zu müde für diesen schei....
    ich habe den Code aus einem anden Script kopiert, ABER da funktionierte es auch nicht, darum habe ich den wert n eine Textdatei schreiben lassen, dieser wird per SH Script eingelesen und in die DB geschrieben :(
    Au man....
    da fehlt ne ganze menge....


    z.B....

    Einmal editiert, zuletzt von cced (22. September 2014 um 01:50)

  • Der Befehl für die Datenbank sieht wie folgt aus:

    INSERT INTO A1_pH (pH) VALUES (7.25);

    Edit: Mir fällt gerad etwas auf.

    cur.execute('INSERT INTO A1_pH (pH) VALUES (%s), ("7.25")')

    Achte mal auf die einfachen Anführungszeichen. Bei dir sind sie vor dem einzutragenden Wert gesetzt. Ich hab das hier korrigiert. Teste das mal so.

    Edit2: Ganz ruhig, bisher ist doch alles in Ordnung. Die Datenbankverbindung wird ordentlich hergestellt. jetzt müssen wir nur noch den Wert richtig eintragen. :)

    Einmal editiert, zuletzt von Teepo (22. September 2014 um 01:56)

  • Wir kommen weiter, das mit den Anführungszeichen war auf jeden fall 1 Fehler!
    Danke dafür!!

  • Leider auch nicht..
    werde noch ein wenig weiter testen.
    DANKE für deine Unterstützung!!!! Gute Nacht!!!

    Code
    root@APiP:/home/pi/scripts/APiP/sensoren# ./pH.py
    pH Wert des Aquariums testen...
    7.92
    Traceback (most recent call last):
      File "./pH.py", line 30, in <module>
        cur.execute('''INSERT into A1_pH (pH) values (%s, %s)''', (line, ))
      File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 159, in execute
        query = query % db.literal(args)
    TypeError: not enough arguments for format string

Jetzt mitmachen!

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