Python - Lendo o tipo BLOB do SQLite3 DB
Este é um seguimento de: Python - Convertendo Hex para INT / CHAR
Agora, tenho uma solução funcional para converter o valor hexadecimal armazenado de um IP de um sqlite3 db em um formato legível e utilizável. No entanto, até agora eu tenho testado copiando e colando os valores diretamente de um visualizador sqlite3 d
Eu tenho tentado pesquisar o db com um script para procurar essas informações, no entanto, descobri que ele aparentemente armazena dados de blob em um buffer que não é instantaneamente legível por humano
Por exemplo, o IP 192.168.0.1 é armazenado como tipo de blob no campo ip como X'C0A80001 '
Desde que trabalhei de um exemplo copiado e colado no meu código, construí um código para retirar o X 'e' do hexadecimal para poder convertê-lo. O que não consigo obter é esse valor do banco de dados (X'C0A80001 '<- esse valor que posso visualizar com um gerenciador de banco de dados). Pesquisando eu encontreihttp: //eli.thegreenplace.net/2009/05/29/storing-blobs-in-a-sqlite-db-with-pythonpysqlite, que mostrou um exemplo de leitura de blobs de e para um banco de dados sqlite, mas seus métodos não funcionaram. Eles exibiram o erro;
print row[0], str(row[1]).encode('hex')
IndexError: tuple index out of range
Sou bastante novo no Python, desculpe-me se estiver faltando algo básico, mas qualquer ponteiro ou exemplo de código que alguém precise me ajudar a resolver isso seria apreciado.
EDIT: Doh, não colou o código do exemplo acima;
c = conn.cursor()
c.execute('select ip from item where name = ' + "\'" + host + "\'")
for row in c:
print row[0], str(row[1]).encode('hex')
Pode ser que eu entenda muito bem o porquê de eu não poder lê-lo da maneira que eu quero
UPDATE: Usando a resposta abaixo, modifiquei meu código para;
rows = c.execute('select ip from item where name= ' + "\"" + host + "\"")
for row in rows:
print str(row[0]).encode("hex")