QR-Code aus Datenbank lesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

hi
ich beschäftige mich gerade damit, einen gespeicherten QR-BLOB aus meiner Datenbank zu lesen und wieder als Image darstellen zu lassen.
Das gelingt aber leider nicht.

Code: Alles auswählen

[...]
SQL_QR = '%s\\QR_Codes.db'  %(path_qr)
conn = sqlite3.connect(SQL_QR)
cursor = conn.cursor()
conn.execute('''CREATE TABLE IF NOT EXISTS QR_Codes(ID INTEGER PRIMARY KEY AUTOINCREMENT,PICTURE BLOB,TYPE TEXT,FILE_NAME TEXT,QR_TEXT TEXT);''')
cursor = conn.cursor()
cursor.execute('''SELECT PICTURE, TYPE, FILE_NAME, QR_TEXT FROM QR_Codes''')
result = cursor.fetchall()
for hurika in result:
    ablob = hurika[0]
    ext = hurika[1]
    afile = hurika[2]
    qr_text = hurika[3]

    beschreibung = [qr_text]
    qr_BESCHREIBUNG.append(beschreibung)
    with open("Output.png", "wb") as output_file:
        output_file.write(ablob)

        I = Image(output_file)
        I.drawHeight = 1*inch*I.drawHeight / I.drawWidth
        I.drawWidth = 1*inch
        I.show()


conn.close()
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was heisst denn "gelingt nicht"? Gibt es Fehlermeldungen, faengt der Hund an zu jaulen, wird die Milch sauer?
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@DMD-OL: Dateinamen setzt man mit ›os.path.join‹ zusammen und nicht mit ›%‹. Tabellen erzeugt man, wenn man die Datenbank anlegt und nicht vor jedem SELECT. Soll qr_BESCHREIBUNG wirklich eine Liste von ein-elementigen Listen sein? ›inch‹ ist nicht definiert, und was soll das multiplizieren mit 1 bewirken? Die Zeilen ab ›I = Image‹ sind falsch eingerückt. Da die Ausgabedatei noch nicht geschlossen wurde, kann es beim Lesen zu Problemen kommen. Das ganze sollte auch nur im Speicher, ohne Schreiben auf Platte möglich sein.
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

danke, sirius3.

Code: Alles auswählen

SQL_QR = os.path.join(path_qr+"\\QR_Codes.db")
conn = sqlite3.connect(SQL_QR)
cursor = conn.cursor()
cursor.execute('''SELECT PICTURE, TYPE, FILE_NAME, QR_TEXT FROM QR_Codes''')
result = cursor.fetchall()

for hurika in result:
    ablob = hurika[0]
    ext = hurika[1]
    afile = hurika[2]
    qr_text = hurika[3]
    beschreibung = [qr_text]
    qr_BESCHREIBUNG.append(beschreibung)

    with open("Output.png", "wb") as output_file:
        output_file.write(ablob)

    I = Image(output_file)
    I.drawHeight = cm*I.drawHeight / I.drawWidth
    I.drawWidth = cm
    I.show()
Ich versuche, ein gespeichertes QR-Image aus der Datenbank auszulesen und es als Image in einem (nicht im Code enthaltenen) Tkinter-Label
darstellen zu lassen. Daher versuche ich als erstes einmal, überhaupt ein Image aus dem Ausgelesenen zu erstellen und will dann mal weiterschauen. :)
Die Fehlermeldung die ich in diesem Codeverusch erhalte, lautet:
exceptions.TypeError: 'module' object not callable
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@DMD-OL: Und an welcher Stelle tritt der Fehler auf?

So benutzt man os.path.join nicht. Das Tuple-Unpacking würde man wohl gleich in der for-Schleife machen.
Antworten