Python - Lesung BLOB-Typ von SQLite3 DB

Dies ist ein follow-on aus: Python - Konvertierung von Hex zu INT/CHAR

Ich habe jetzt eine funktionierende Lösung für das konvertieren der gespeicherten hex-Wert, der eine IP aus einer sqlite3 db in einem lesbaren und verwendbaren format. Aber bis jetzt habe ich getestet, durch kopieren und einfügen der Werte direkt aus einer sqlite3 db viewer.

Habe ich versucht, eine Umfrage der db mit einem script Suche, die Informationen habe ich jedoch entdeckt, dass es offenbar speichert blob-Daten in einem Puffer, was nicht sofort lesbar ist.

Beispielsweise die IP 192.168.0.1 ist als blob gespeichert geben Sie unter dem Feld "ip-X'C0A80001'

Da arbeitete ich mit einem kopierten und eingefügten Beispiel in meinem code, den ich konstruiert haben, die code-Streifen, die X' und ' von der hex in der Lage sein zu konvertieren. Was ich nicht bekommen kann ist, dass Werte von der Datenbank (X'C0A80001' <- dieser Wert, den ich mit einem db-manager).
Auf der Suche fand ich http://eli.thegreenplace.net/2009/05/29/storing-blobs-in-a-sqlite-db-with-pythonpysqlite/ die zeigte, ein Beispiel für das Lesen von blobs und aus einer sqlite-db, aber Ihre Methoden nicht funktionieren. Sie angezeigt der Fehler;

print row[0], str(row[1]).encode('hex')
IndexError: tuple index out of range

Ich bin ziemlich neu in Python, also entschuldigt, wenn ich bin fehlt etwas grundlegendes, aber irgendwelche Hinweise oder code-Beispiele, die jemand hat, um mir helfen, meinen Kopf um diese würde geschätzt.

BEARBEITEN:
Doh, nicht fügen Sie den code aus dem obigen Beispiel;

c = conn.cursor()
c.execute('select ip from item where name = ' + "\'" + host + "\'")
for row in c:
        print row[0], str(row[1]).encode('hex')

Kann es sein, mein Verständnis, das ist wirklich aus hier, warum kann ich es nicht Lesen den Weg zurück, ich will

UPDATE:
Anhand der folgenden Antwort, die ich meine modifizierten code;

rows = c.execute('select ip from item where name= ' + "\"" + host + "\"") 
   for row in rows:
       print str(row[0]).encode("hex")
  • Sie speichern IP-Adressen in der DB, aber nur IPv4 ersetzen. Was ist mit IPv6?
InformationsquelleAutor Draineh | 2011-09-29
Schreibe einen Kommentar