Seite 1 von 1

Python 2.5 Extrahierung binärer Daten in PostgreSQL 8.3

Verfasst: Donnerstag 22. Januar 2009, 14:14
von Daniel8888
Hallo Forum, ich kenne mich mit Python leider nicht aus, muss aber einen Trigger in Python erstellen, ich arbeite mit PostgreSQL 8.3 und Python 2.5.

Ziel des Triggers ist es aus dem Feld raw0 die binären Daten (einer Polylinie) rauszuziehen.

Folgendes Skript habe ich:


import struct (brauche ich später noch)

p = "SELECT raw0 FROM haus1 where id = 1 and layer = 0";

(raw0= enthält die binären Daten!!!)

r = plpy.execute(p);

octstr = r[0]['raw0']

return octstr

das RETURN-Ergebnis (ein Octal-String) sieht wie folgt aus:

octstr= \\000\\000\\000\\000~ KA\\000\\000\\000\\000-\\255VA\\000\\000\\000\\000\\234 KA\\000\\000\\000\\000<\\255VA\\000\\000\\000\\000\\324$KA\\000\\000\\000\\000)\\261VA\\000\\000\\000\\000\\340'KA\\000\\000\\000\\000\\320\\257VA\\000\\000\\000\\000\\316*KA\\000\\000\\000\\000\\210\\254VA\\000\\000\\000\\000\\322&KA\\000\\000\\000\\000k\\253VA

die Buchstaben und die anderen Zeichen sollen aber nicht auftauchen sondern ich brauche aber folgendes Ergebnis:

ocstr='\\000\\000\\000\\000\\000\\120\\174\\100\\000\\000\\000\\000\\000\\020\\167\\100\\000\\000\\000\\000\\000\\120\\174\\100\\000\\000\\000\\000\\000\\020\\167\\100\\000\\000\\000\\000\\000\\000\\177\\100\\000\\000\\000\\000\\000\\360\\165\\100\\000\\000\\000\\000\\000\\260\\175\\100\\000\\000\\000\\000\\000\\360\\164\\100'


HAT JEMAND EINE IDEE WORAN DAS LIEGEN KÖNNTE?? DAS WÄRE TOLL!!!!

VIELEN DANK IM VORAUS!!!

Daniel

Edit (BlackJack): Gross-/Kleinschreibung im Titel.

Verfasst: Donnerstag 22. Januar 2009, 14:26
von cofi
Code-Tags und adäquate Nutzung von Großbuchstaben würden deine Chance auf eine hilfreiche Antwort erhöhen.

Verfasst: Donnerstag 22. Januar 2009, 14:30
von gkuhl
Hi Daniel und willkommen im Forum.

Bitte SCHREIE nicht so rum und benutze die Code-Tags für deinen Code. Das macht deine Beiträge lesenswerte und erhöht die Chance, dass jemand freundlich antwortet.

Zu deinem Problem: Du kannst einfach über deinen String iterieren und einen neuen String:

Code: Alles auswählen

import string

newstr = ""
octstr = "...dein String..."

for char in octstr:
    if char in string.digits or char == "\\":
        newstr += char
print newstr
Für ein besseres Verständnis für Python empfehle ich dir das offizielle Python Tutorial durchzuarbeiten. Dort findet sich auch eine hilfreiche Dokumentation.

Grüße
gkuhl

Verfasst: Montag 26. Januar 2009, 13:35
von Daniel8888
Hallo gkuhl,

vielen Dank für die Tipps. Ich werde mich nun mal an das Python-Tutorial machen.

Gruss

Daniel