Pi python mysql

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
genervternewbie
User
Beiträge: 25
Registriert: Samstag 17. November 2018, 18:42

Soweit das programm wie es läuft bis jetzt.

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf8 -*-

import RPi.GPIO as GPIO
import MFRC522
import signal
import time

continue_reading = True

# Capture SIGINT for cleanup when the script is aborted
def end_read(signal,frame):
    global continue_reading
    print "\nProgramm beendet!"
    continue_reading = False
    GPIO.cleanup()

# Hook the SIGINT
signal.signal(signal.SIGINT, end_read)

# Create an object of the class MFRC522
MIFAREReader = MFRC522.MFRC522()

# Welcome message
print "Programm gestartet zum Karten scannen!"
print "Drücke Ctrl-C zum beenden."

# This loop keeps checking for chips. If one is near it will get the UID and authenticate
while continue_reading:
    # Scan for cards    
    (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)

    # If a card is found
    #if status == MIFAREReader.MI_OK:
    #    print "Card detected"
    
    # Get the UID of the card
    (status,uid) = MIFAREReader.MFRC522_Anticoll()

    # If we have the UID, continue
    if status == MIFAREReader.MI_OK:
        
        print "Karte mit Nummer " + str(uid[0]) + str(uid[1]) + str(uid[2]) + str(uid[3]) + " erkannt."
        
        card_id2 = raw_input("Vorname: ")
        
        card_id3 = raw_input("Nachname: ")
        
        #print  str(uid[0]) + str(uid[1]) + str(uid[2]) + str(uid[3])
        
        card_id1 = str(uid[0]) + str(uid[1]) + str(uid[2]) + str(uid[3])
        
        file = open("cards_ids.txt", "a")
        
        file.write(card_id1 + "|@|" + card_id2 + "|@|" + card_id3 + "\n")
        
        file.close()

        print("Nächste Karte/Chip")
        
        time.sleep(3)
änderung

Code: Alles auswählen

        file = open("cards_ids.txt", "a")
        
        file.write(card_id1 + "|@|" + card_id2 + "|@|" + card_id3 + "\n")
        
        file.close()
Thonny sagt mir:
Python 3.5.3 (/usr/bin/python3)
meine versuche es mit einer Datenank ist schief gelaufen, habe verschiedene lösungen gefunden aber keine funktionierte
import MySQLdb und mysql connector hatte ich drin was hier im code nicht vorliegt
meine tabelle
CREATE TABLE tsvw (
id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
rfid01 VARCHAR(50) COLLATE latin1_german1_ci NOT NULL COMMENT 'RFID ID',
rfid02 VARCHAR(50) COLLATE latin1_german1_ci NOT NULL COMMENT 'Vorname',
rfid03 VARCHAR(50) COLLATE latin1_german1_ci NOT NULL COMMENT 'Nachname' )

Fehler meldungen gab es keine
nur keine einträge
daten aus db auslesen habe ich nicht versucht .


dann fand ich diesen ansatz
was ist mit dieser lösung

Code: Alles auswählen

import telnetlib

        def load(self, url):
        tn = telnetlib.Telnet(self.host, self.port)
        tn.write('window.location="%s"' % url)
        result = tn.read_until('\n')
        return result

               url = "http://localhost/indb.php?rfidToken=" + uidString 
               c.load(url)
die indb.php ist nicht das problem erstmal die wäre der nächste schritt aber mit php kann ich daten in db eintragen
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was willst du uns mit all dem sagen? Ich sehe keine Fehlermeldungen, und zu Erzaehlungen von Dingen, die du getan haben magst, die nicht die gewuenschten Ergebnisse geliefert haben, kann man auch nur mit den Achseln zucken. Hast du halt was falsch gemacht. Last but not least ist der Code ganz unten alles, aber kein Python.

Insofern waere mal eine Erklaerung, was du tun willst, ein guter Anfang. Ganz allgemein sei angemerkt: Python kann selbstverstaendlich Daten in einer MySQL ablegen, wie abertausend Webserver basierend auf Python in dieser Welt belegen. Das Problem benoetigt also keine ganz sicher kein PHP in the mix.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@genervternewbie: Da Du nicht zeigst, wie Du denn nun die Datenbank ansprichst, kann Dir auch niemand helfen. Vielleicht fehlt nur ein `commit`?

Und weil das offizielle Beispiel von diesem RFID-Reader Schrott ist:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf8 -*-
import MFRC522
import time

def read_card(reader):
    (status, _) = reader.MFRC522_Request(reader.PICC_REQIDL)

    if status != reader.MI_OK:
        # no card found
        return
    
    (status, uid) = reader.MFRC522_Anticoll()
    if status != reader.MI_OK:
        # no card found
        return
        
    card_id = ''.join(map(str, uid))
    print "Karte mit Nummer %s erkannt" % card_id
        
    name = raw_input("Vorname: ")
    surname = raw_input("Nachname: ")
    with open("cards_ids.txt", "a") as output:
        output.write('%s|@|%s|@|%s' % (card_id, surname, name))
    print("Nächste Karte/Chip")
    time.sleep(3)

def main():
    reader = MFRC522.MFRC522()

    print "Programm gestartet zum Karten scannen!"
    print "Drücke Ctrl-C zum beenden."
    try:
        while True:
            read_card(reader)
    except KeyboardInterrupt:
        pass

if __name__ == '__main__':
    main()
genervternewbie
User
Beiträge: 25
Registriert: Samstag 17. November 2018, 18:42

es funzt nun warum unbekannt
Antworten