Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

wie lese ich den DB richtigt...

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Morin, 3 November 2016.

  1. Morin

    Morin Benutzer

    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")
     
  2. ukulele

    ukulele Datenbank-Guru

    Dir fehlt eine WHERE Einschränkung, in etwa sowas wie
    Code:
    SELECT id, name, cid FROM schrank WHERE cid = $cid
     
  3. Morin

    Morin Benutzer

    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'")
     
  4. ukulele

    ukulele Datenbank-Guru

    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.
     
  5. Morin

    Morin Benutzer

    ok, danke
     
  6. Morin

    Morin Benutzer

    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.....
     
  7. akretschmer

    akretschmer Datenbank-Guru

    was hat denn cid für einen Datentyp?
     
  8. Morin

    Morin Benutzer

    Varchar
     
  9. akretschmer

    akretschmer Datenbank-Guru

    Pfff. Sollte einklich gehen, aber, MySQL, ... vielleicht zeigst uns ja auch nicht alles.
     
  10. Morin

    Morin Benutzer

    Was könnte ich euch noch Zeigen?
     
  11. akretschmer

    akretschmer Datenbank-Guru

    Bist Du Dir sicher, daß die Fehlermeldung von der DB kommt?
     
  12. Morin

    Morin Benutzer

    sicher bin ich gar nichts....
     
  13. Morin

    Morin Benutzer

    die Fehlermeldung kommt vom Python aber hat mit DB zu tun....vieleicht..was meinst du?
     
  14. akretschmer

    akretschmer Datenbank-Guru

    Das kann man doch testen. Einfach das SQL direkt in der DB laufen lassen, und/oder im Log nachsehen.
     
  15. Morin

    Morin Benutzer

    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
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden