Seite 1 von 1

QR-Code aus Datenbank lesen

Verfasst: Montag 27. Februar 2017, 19:51
von DMD-OL
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()

Re: QR-Code aus Datenbank lesen

Verfasst: Montag 27. Februar 2017, 22:09
von __deets__
Was heisst denn "gelingt nicht"? Gibt es Fehlermeldungen, faengt der Hund an zu jaulen, wird die Milch sauer?

Re: QR-Code aus Datenbank lesen

Verfasst: Dienstag 28. Februar 2017, 11:54
von Sirius3
@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.

Re: QR-Code aus Datenbank lesen

Verfasst: Dienstag 28. Februar 2017, 18:31
von DMD-OL
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

Re: QR-Code aus Datenbank lesen

Verfasst: Dienstag 28. Februar 2017, 18:43
von Sirius3
@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.