Seite 1 von 1

Datenbank+RFID

Verfasst: Dienstag 1. November 2016, 22:19
von Salis
Hi ,
ich habe ein Programm für RFID-modul geschrieben. Ich möchte mit meinem RFID auf den Datenbank zugreifen und wenn die ID-card ,die in DB registriert ist, gefunden wird soll Türschloss aufgehen. Leider weiss ich gar nicht wie ich das machen soll:(

Code: Alles auswählen

db = MySQL.connect(host="localhost","user="root", passwd="sk1290", db="schrank")
sur =db.cursor()
cur.execute("SELECT * FROM perso WHERE cid = %s",MIFAREReader)

if status ==MIFAREReder.MI_OK:
     found_rows =cur.fetchall()
     print(found_rows)
     if found_rows:
        for row in cur.fetchall():
             cid = str(row[2])
             if cid:
             print ("bitte rein")
else:
     print("kein Zugang")
(jetzt mal ohne schloss)


das funktioniert nicht. :K Das Programm überspringt sofort zu(" Keine Zugang") und liesst die karten UID aus dem DB nicht.
Ich habe separat Programm geschrieben um zu testen ob ich mich mit DB vebinden kann, und es hat funktioniert, ich kann die Daten aus dem DB ohne RFID auslesen.

Kann mir bitte jemand helfen mit dem code ??????

danke
Salis

Re: Datenbank+RFID

Verfasst: Dienstag 1. November 2016, 23:00
von Sirius3
@Salis: zuerst einmal, ›cur‹ wird nirgends definiert, nur ›sur‹ und was ist ›MIFAREReader‹ und was hat das mit ›MIFAREReder‹ zu tun? Nachdem einmal ›fetchall‹ aufgerufen worden ist, sind alle Zeilen gelesen und ein weiteres Lesen liefert nichts mehr. Damit ist ›cid‹ nicht definiert. Es ist also sehr verwunderlich, dass da überhaupt was ausgegeben wird und nicht irgendein anderer Fehler kommt.

Re: Datenbank+RFID

Verfasst: Mittwoch 2. November 2016, 09:51
von Salis
ja stimmt statt sur=db.cursor() soll cur = db.cursor() stehen , habe verbessert.
MIFAREReader ist mein RFID.......

Re: Datenbank+RFID

Verfasst: Mittwoch 2. November 2016, 11:01
von Sirius3
@Salis: jetzt mit SyntaxHighlighting sieht man auch, dass in der ersten Zeile ein Anführungszeichen zu viel ist und ab Zeile 11 die Einrückung nicht stimmt. Ohne korrekten Code kann man ja schlecht Fehler finden. So wie es jetzt dasteht, würde ich sagen `status != MIFAREReder.MI_OK`. Hast Du das schon überprüft?

Re: Datenbank+RFID

Verfasst: Donnerstag 3. November 2016, 10:19
von Salis
jetzt jedes mal wenn ich die Karte einscanne kommen alle Daten aus dem DB ausgegeben. Ich will aber das es nur die eingescannte Karte gelesen wird. Es zeigt zugang berechtigt auch mit Karten die nicht in DB sind......

Code: Alles auswählen

con = MySQLdb.connect(host="localhost", user="root", passwd="sk1290", db="schrank")
cur = con.sursor()


if status == MIFAREReader.MI_OK:
   cur.execute("SELECT id, name, cid FROM schrank;")
   for row in cur.fetchall() :
     if uid == 1:
        print ("Zugang")
     else:
        print ("kein Zugang")
wie bekomme ich dass nur cid aus dem db erkannt werden und alle fremde als keine Zugang?

Re: Datenbank+RFID

Verfasst: Donnerstag 3. November 2016, 10:37
von Sirius3
@Salis: Du hast die WHERE-Clause weggeschmissen und wunderst Dich, dass Du alle Datensätze bekommst‽ Außerdem bekommst Du außer einem NameError nichts, `uid` ist nicht definiert.

Re: Datenbank+RFID

Verfasst: Donnerstag 3. November 2016, 11:08
von BlackJack
@Sirius: Fast richtig, der `AttributeError` weil `Connection`-Objekte kein `sursor`-Attribut haben, kommt früher als der `NameError`. ;-) Oh, und auch der würde schon bei `status` kommen und falls das definiert wäre erst noch bei `MIFAREReader`. SCNR

@Salis: Du zeigst offensichtlich nicht Code denn Du tatsächlich ausführst, sondern welchen den Du abtippst (?) oder der so ähnlich aussieht wie das was Du tatsächlich ausführst. Es macht nicht so viel Sinn Fehler in Code zu suchen der gar nicht der tatsächliche ist, und damit vielleicht auch gar nicht das eigentliche Problem enthält und, wie wir hier mehrfach gesehen haben, auf jeden Fall *andere* Probleme enthält, die in dem Code den Du tatsächlich hast, so nicht enthalten sein können.