kostenloser Webspace werbefrei: lima-city


auf dem Raspberry Pi eine MySQL kommunikation

lima-cityForumProgrammiersprachenPython

  1. Autor dieses Themas

    freewareecke

    Kostenloser Webspace von freewareecke

    freewareecke hat kostenlosen Webspace.

    Hey Leute,

    ich habe zur Zeit ein Script auf dem Raspberry Pi laufen und möchte dort nun Funktionen ergänzen, die zum Programm gehören. Nur leider komme ich da nicht vorran.

    MySQL Habe ich an sich schon benutzt aber noch nicht im Zusammenhang mit Python.

    Es geht um folgende Funktion:

    def einlagern(scan):
         
                abfrage = cursor.execute("SELECT * FROM warenlager WHERE barcode = '%s'" % scan)
         
                if abfrage == 0:
                        print "Barcode unbekannt"
                        print ""
         
                rows = cursor.fetchall()
                for row in rows:
                        inmenge = input("Bitte Menge eingeben: ")
                        neuemenge = (int(row[2]) + int(inmenge))
                        cursor.execute("UPDATE warenlager SET menge=? WHERE barcode=?",(neuemenge, scan))
                        return


    Dieser Code soll als erstes über die Abfrage sicherstellen, dass das Produkt überhaupt vorhanden ist. Wenn dieses vorhanden ist, soll er die Menge über den UPDATE Befehl abändern. Die Abfragefunktion klappt, ich habe dies bereits vorher getestet und nutze diese in einer anderen Funktion schon.

    Der Codeteil erzeugt folgende Fehlermeldung:

    Traceback (most recent call last):
          File "mysql.py", line 60, in <module>
            einlagern(scan)
          File "mysql.py", line 33, in einlagern
            cursor.execute("UPDATE warenlager SET menge=? WHERE barcode=?",(neuemenge, scan))
          File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 159, in execute
            query = query % db.literal(args)
        TypeError: not all arguments converted during string formatting


    Kann mir jemand verraten wodran dies liegt? Wenn zusätzliche Informationen benötigt werden, bitte fragen.



    Michael

    PS: Wenn wir gerade schon dabei sind, kann man mir vielleicht noch ein Tipp geben, wie man folgende MySQL Befehle in Python nutzt:

    INSERT
    DELET
    COUNT (Habe ich zwar an sich indirekt genutzt, aber nur ob ein Datensatz vorhanden ist, ggf. benötigt man noch mal die COUNT Funktion.)

    Dadrüber hinaus, gibt es die Möglichkeit, die Connectdaten aus zu lagern? Also ähnlich wie bei PHP per include - Befehl, dass man die so einbinden kann aus einer zweiten Datei?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    1) Nimm als Platzhalter je ein
    %s
    anstatt eines
    ?
    .
    2) Nimm auch bei der Abfrage einen Platzhalter im WHERE-Teil, sonst bist du für SQL-Injection anfällig.
    3) Wenn du eine Änderung mit UPDATE, INSERT o.ä. durchführst, musst du anschließend ein
    db.commit()
    durchführen (unter der Annahme, dass
    db
    dein MySQLdb-Objekt ist). Ansonsten werden deine Änderungen zurückgerollt und niemals in der Datenbank festgeschrieben.
    4) Konfigurierbarkeit: sieh dir dazu das ConfigParser-Modul an.
    5) Auslagern von Code: dazu gibt es
    import
    usw. Du kannst also z.b. deinen MySQL-Code in ein eigenes Modul auslagern und es importieren, wenn du es benötigst.
    6) Warum Python 2.7 und nicht Python 3?
  4. Autor dieses Themas

    freewareecke

    Kostenloser Webspace von freewareecke

    freewareecke hat kostenlosen Webspace.

    Werde das mal in Angriff nehmen, soweit ich es hin bekomme.

    Werde mal den ganzen Code morgen hier mal Posten, denke damit kann man mehr anfangen.

    Zu Punkt 5 kannst mir da vielleicht ein wenig helfen, wie man sowas gestalten kann?

    Und zu Punkt 6, naja ich dachte an sich spricht da nichts gegen und den "Basiscode" hab ich so gehabt und da ich nur Hobbyprogger bin mit wenig Erfahrung bin hab ich es mir nich zugetraut auf moderner zu machen. Also Version 3.

    Vorallem ist die Sache, viele "Bestandteile" für den Raspberry Pi, vorallem was Hardwareansteuerung angeht basiert noch auf Version 2.7 zumindest aus den Büchern und daher denke ich, ist nich verkehrt bei einem System zu bleiben.



    Michael
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!