Python: - Как искать БД SQLite3 для типа Blob? - PullRequest
1 голос
/ 29 сентября 2011

Следующий от;

Python - чтение типа BLOB из базы данных SQLite3

Python - преобразование шестнадцатеричного значения в INT / CHAR

У меня есть скрипт, который теперь запрашивает базу данных sqlite3 с заданным идентификатором.По этому идентификатору он находит IP этого устройства.Это все сделано в таблице.Затем он берет этот найденный IP-адрес и переходит к таблице 2.

В таблице 2 он затем пытается выполнить поиск строк, у которых поле IP совпадает с ранее обнаруженным IP-адресом.

Благодаря помощи впредыдущие вопросы мне удалось преобразовать исходный тип BLOB-объекта, который хранится в базе данных sqlite3, в читаемый формат (в шестнадцатеричный формат, а затем в действительный IP-адрес).Теперь я обнаружил, что на самом деле я не могу выполнить команду sql where для поиска этого.Возможно, наивно я пытался выполнить поиск исходного возвращаемого значения из моего первого поиска, однако это возвращает буфер

(<read-write buffer ptr 0x7f251c86d778, size 4 at 0x7f251c86d738>,)

Это то, что я не могу явно использовать для поиска точной копии большого двоичного объекта, так какон содержит другую информацию.Единственное решение, о котором я подумал, - это пересмотреть базу данных и преобразовать каждый IP-адрес из BLOB-объекта в гекс и выполнить сравнение с моей ранее сохраненной переменной, где она была преобразована в гекс из предыдущей таблицы.

Является ли этоединственный способ я могу выполнить поиск, как это?Сегодня мне очень помогли, поэтому я рад указателям в правильном направлении

Отрывок кода: возвращает IP из первой таблицы

rows = c.execute('select ip from table1 where name= ' + "\"" + host + "\"") 
   for row in rows:
       print str(row[0]).encode("hex")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...