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:
Python
#!/usr/bin/python
# coding=utf-8
# Datei functions.py
import serial
import MySQLdb
#Auslesen der RFID-Transponder
def read_rfid():
ser = serial.Serial("/dev/ttyAMA0")
ser.baudrate = 9600
daten = ser.read(14)
ser.close()
daten = daten.replace("\x02", "")
daten = daten.replace("\x03", "")
return daten
class DB():
def __init__(self):
db = mysqldb.connect(host="localhost", user="root", passwd="test1234", db="rfid")
db.autocommit(True)
self.cur = db.cursor()
def close_db( self ):
self.cur.close()
def add_user(self,rfid_id, name):
add=self.cur.execute("INSERT INTO user (rfid, name) " + "VALUES (%s,%s)", (rfid_id, name))
def mysql_read(self, rfid_id):
a= self.cur.execute("SELECT id, name, timestamp, rfid " + "FROM user WHERE rfid = %s" ,rfid_id)
id = 0
name = 0
timestamp = 0
rfid = 0
for row in self.cur.fetchall():
id = int(row[0])
name = str(row[1])
timestamp = str(row[2])
rfid = str(row[3])
return id, name, timestamp,rfid
def update_timestamp (self, rfid_id):
a= self.cur.execute("UPDATE user SET timestamp = NOW() " + "WHERE rfid = %s")
Alles anzeigen
Das Programm add.py ist der Teil den ich über putty aufrufe.
Python
#!/usr/bin/python
# coding=utf-8
# Datei add.py
import RPi.GPIO as GPIO
from functions import *
db = DB()
print "Neuer Zugangsberichtigter"
print "Transponder einlesen..."
id = read_rfid()
name = raw_input("Name eingeben: ")
try:
db.add_user(id,name)
print "Neuer Datensatz angelegt"
except:
print "Fehler beim Schreiben"
db.close_db()
Alles anzeigen