wie lese ich den DB richtigt...

Morin

Benutzer
Beiträge
13
Hi Leute;

ich lerne Programmieren mit Python. Habe eine kleine db erstellt mit 3 Personen, jeder Person hat eine Karten ID(cid). Ich habe vor wenn ich die karte aus dem db einscanne das nur die erkannt wird. Und wenn ich fremde Karte einscanne dass "keine Zugang" geschrieben wird.
Bis jetzt habe nur erreicht dass beim eincannen eine beliebigen Karte(egal ob in db regiestriert oder nicht) wird immer "Zugang" geschrieben.
Ich verstehe nicht warum beim lesen einer Karte alle Personen werden ausgegeben.
was mache ich falsch? bitte um Hilfe

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 cid == 1:
print ("Zugang")
else:
print ("kein Zugang")
 
Werbung:
danke für deine Antwort...
ich habe verändert:


Jetzt bekomme ich so einen error
cur.execute("SELECT id, name, cid FROM users WHERE cid = $cid")

OperationalError: (1054, "Unknown column '$cid' in 'where clause'")
 
Na $cid ist natürlich ein Platzhalter für eine Variable in deiner Programmiersprache (die diese Forum nicht betreut). Du musst die Karten-ID der gesteckten Karte natürlich an die DB übergeben und damit prüfst du ob ein Zugang existiert.
 
Ich habe jetzt so eine Meldung wein ich das Programm Laufen lasse.
Warning: Truncated incorrect DOUBLE value: '198-93-162-1-56'
Warning: Truncated incorrect DOUBLE value: '68-213-195-246-164'

Dann habe in DB so eine SQL-Abfrage gespeichert:

SELECT * FROM `users` WHERE `cid` in ('198-93-162-1-56', '214-100-164-1-23', '150-246-159-1-254')

trotzdem kommt die Meldung weiter.
Für die Karten habe den Typ-Varchar.....
 
Werbung:
meinst du das?
SELECT * FROM `users` WHERE `cid` in ('198-93-162-1-56', '214-100-164-1-23', '150-246-159-1-254')

das funktioniert....
oder was anderes? ich kenne mich mit DB nicht aus
 
Zurück
Oben