Python 2.5 Extrahierung binärer Daten in PostgreSQL 8.3

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Daniel8888
User
Beiträge: 2
Registriert: Donnerstag 22. Januar 2009, 14:08

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.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Code-Tags und adäquate Nutzung von Großbuchstaben würden deine Chance auf eine hilfreiche Antwort erhöhen.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

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
Daniel8888
User
Beiträge: 2
Registriert: Donnerstag 22. Januar 2009, 14:08

Hallo gkuhl,

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

Gruss

Daniel
Antworten