Fehlermeldung global name 'mysqldb' is not defined

  • Hallo,

    ich bräuchte fachmännische Hilfe. Ich habe aus meinem Raspberry Pi Buch einen Teil für einen RFID-TÜröffner mit Zugangskontrolle abgeschrieben und habe mich auch strigt an das Buch gehalten. Nun wollte ich es testen und bekomme folgende Fehlermeldung:

    Code
    pi@raspberrypi ~/Desktop/rfid $ sudo python add.py
    Traceback (most recent call last):
     File "add.py", line 8, in <module>
       db = DB()
     File "/home/pi/Desktop/rfid/functions.py", line 22, in __init__
       db = mysqldb.connect(host="localhost", user="root", passwd="test1234", db="rfid")
    NameError: global name 'mysqldb' is not defined

    Ich kenne mich nicht sogut aus mit der MySQL-Datenbank. Weiß jemand von euch wo mein Fehler liegt? Python-mysqldb ist bereits installiert.

    Hier die zwei Programmteile die ausgeführt werden sollen:

    Das Programm add.py ist der Teil den ich über putty aufrufe.

  • Fehlermeldung global name 'mysqldb' is not defined? Schau mal ob du hier fündig wirst!

  • GROSS-/kleinschreibung ist enorm wichtig. Deine Class heißt DB() aber du verwendest in der add.py: db. . Es gibt also zB. kein db.add_user(id,name) sondern nur DB.add_user(id,name)

    ^- das war leider Quatsch. Hab "db = DB()" überlesen :blush:

  • Hallo Dave,

    einmal verwendest Du [font="Courier New"]mysqldb[/font], ein anderes Mal [font="Courier New"]MySqldb[/font]. Was ist nun richtig? Mindestens eines davon ist nicht richtig...

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (11. Oktober 2015 um 14:00)

  • einmal verendest Du [font="Courier New"]mysqldb[/font], ein anderes Mal [font="Courier New"]MySqldb[/font]. Was ist nun richtig? Mindestens eines davon ist nicht richtig...

    :thumbs1:

    [code=php]
    class DB():
    def __init__(self):
    db = mysqldb.connect(host="localhost", user="root", passwd="test1234", db="rfid")
    [/php]
    Ändern in:
    [code=php]
    class DB():
    def __init__(self):
    db = MySQLdb.connect(host="localhost", user="root", passwd="test1234", db="rfid")
    [/php]

    Alternativ:
    [code=php]#!/usr/bin/python
    # coding=utf-8
    # Datei functions.py

    import serial
    import MySQLdb[/php]
    Ändern in:[code=php]#!/usr/bin/python
    # coding=utf-8
    # Datei functions.py

    import serial
    import MySQLdb as mysqldb[/php]

  • Hallo Meigrafd,

    :thumbs1:
    ...

    was ist es doch so schwer, fehlerfreie Kommentare zu schreiben :@ . Ich habe in meinem Beitrag aus "verendest" das beabsichtigte "verwendest" gemacht.

    Danke für die Ausführung der finalisierenden Gedanken zur Lösung. Das hilft bestimmt weiter!

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Fehler gefunden und behoben jetzt funktioniert es. Hab nun das Hauptprogramm main.py geschrieben und bekomme da auch eine Meldung mit der ich nicht wirklich was anfangen kann.

    Also mit dem oberen Teil kann ich noch etwas anfangen, aber was dann nach "Tuer 5 Sekunden geoeffnet" kommt weiß ich nicht was dies bedeuten soll.

    Hier das Programm:

  • Die "RuntimeWarning" kommt davon das der GPIO schon mal initialisiert, das Script aber derart beendet, das GPIO.cleanup() nicht ausgeführt, wurde.

    Und die Meldung danach ist kein Python Problem sondern ein SQL Fehler (SQL Syntax error).

    Einfach mal gucken was nach der letzten print Zeile in deinem Script steht und was dort mit SQL zu tun haben könnte (steht aber auch in der Ausgabe der Fehlermeldung) ... Dann guckste dir die jeweilige Funktion an und prüfst noch mal ganz genau ob das was du da geschrieben hast so auch im Buch steht. Wenn das tatsächlich im Buch falsch steht ist das Buch müll :lol:


    Ansonsten Google einfach nach den Fehlermeldungen, dann sollte es genug Erklärungen geben.


  • Die "RuntimeWarning" kommt davon das der GPIO schon mal initialisiert, das Script aber derart beendet, das GPIO.cleanup() nicht ausgeführt, wurde.

    Und die Meldung danach ist kein Python Problem sondern ein SQL Fehler (SQL Syntax error).

    Einfach mal gucken was nach der letzten print Zeile in deinem Script steht und was dort mit SQL zu tun haben könnte (steht aber auch in der Ausgabe der Fehlermeldung) ... Dann guckste dir die jeweilige Funktion an und prüfst noch mal ganz genau ob das was du da geschrieben hast so auch im Buch steht. Wenn das tatsächlich im Buch falsch steht ist das Buch müll :lol:


    Ansonsten Google einfach nach den Fehlermeldungen, dann sollte es genug Erklärungen geben.

    Okay Fehler gefunden. Es hat ein Komma gefehlt.

    Ist es möglich im main.py eine led blinke zulassen in der Zeit, in der der Raspberry Pi auf den Transponder wartet?

Jetzt mitmachen!

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