2016-05-25 5 views
0

Hier ist mein Code:Wie binäre Blob von PostgreSQL in Datei speichern?

currSrc = connSrc.cursor() 
    currSrc.execute("""SELECT request_id, time_beg, shape FROM "REQUESTS" WHERE fl_ready=1""") 

shape haben Typ Blob (bytea). Ich muss es auf FS speichern. Wie kann ich es mit Python machen?

+1

Werfen Sie einen Blick auf den Link, den ich gepostet habe, sollte es keinen Unterschied zwischen PostgreSQL und MySQL-Blob-Handhabung geben. – Eric

+0

@Erik Die Antwort auf diese Frage war eine schnelle Lösung für ein Problem, das durch eine schlechte Entwurfsentscheidung verursacht wurde, die darin bestand, eine Binärdatei in einer Bytea-Spalte als Base64-codierte Zeichenfolge zu speichern, nicht so binär wie sie sein sollte. –

+0

Ich empfehle dringend, Dateien in der Datenbank zu speichern, da dies zu einem schnellen Wachstum der Datenbankgröße und folglich zu einer langsamen Datenbank führt. – caarlos0

Antwort

0

Schreiben Sie einfach es auf die Platte:

currSrc.execute(""" 
    SELECT request_id, time_beg, shape 
    FROM "REQUESTS" 
    WHERE fl_ready=1 
""") 
rs = cursor.fetchall() 
f = open('/path/to/the/file', 'wb') 
f.write(rs[0][2]) 
f.close() 

Der Grund für die [0][2] ist, dass es die erste Zeile des Ergebnisses eingestellt und der dritten Spalte.

Verwandte Themen