Sqlite, где запрос в Python на поле целочисленного значения не работает - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь запросить в базе данных SQLite строки, которые удовлетворяют условию cur.execute("SELECT * FROM data WHERE 'FirstPacketTime' > 1570680300").

Я просмотрел несколько вопросов stackoverflow и других онлайн-ресурсов. В этом случае поле db FirstPacketTime определяется как целочисленный тип данных (дата-время в секундах). Результаты строк также возвращаются как целые числа, однако данные строк содержат строки, в которых значения FirstPacketTime явно меньше значения, показанного выше. Изменение «больше» на «равно» или «меньше» не приводит к результатам запроса. Что мне здесь не хватает? Ранее я выполнял запросы с python к базам данных MySQL без проблем.

Схема базы данных

  • (0, 'FirstPacketTime', 'integer', 0, None, 0)
  • (1, 'SourceIP', 'текст', 0, нет, 0)
  • (2, 'SourcePort', 'целое число', 0, нет, 0)
  • (3, 'DestinationIP', 'text', 0, None, 0)
  • (4, 'DestinationPort', 'integer', 0, None, 0)
  • (5, 'Протокол ',' текст ', 0, None, 0)
  • (6,' TotalBytes ',' integer ', 0, None, 0)
  • (7,' TotalPackets ','integer ', 0, None, 0)

Результаты запроса - первые 10 записей

  • (1570676279, '19 .116.151.212', 9876, '19 .116.0.157 ',53299, 'tcp_ip', 56, 1)
  • (1570676279, '19 .116.151.212 ', 9876, '19 .116.0.157', 53301, 'tcp_ip', 56, 1)
  • (1570650779, '19 .116.1.36 ', 53497, '19 .116.160.133', 102, 'tcp_ip', 67799, 696)
  • (1570676339, '19 .116.89.20 ', 3139, '19 .116.29.147', 445, 'tcp_ip', 96, 2)
  • (1570676339, '19 .116.89.20 ', 3479,'19 .116.29.189 ', 445,' tcp_ip ', 96, 2)
  • (1570676339, '19 .116.89.17', 3843, '19 .116.29.33 ', 445,' tcp_ip ', 96, 2)
  • (1570676339, '19 .116.89.24 ', 2398, '19 .116.29.6', 445, 'tcp_ip', 96, 2)
  • (1570676339, '19 .116.89.20 ', 3206,'19.116.29.159 ', 445,' tcp_ip ', 96, 2)
  • (1570676339, '19 .116.89.20', 3161, '19 .116.29.151 ', 445,' tcp_ip ', 96, 2)
  • (1570676339, '19 .116.89.15 ', 1082, '19 .116.0.16', 445, 'tcp_ip', 96, 2)

Код

cur.execute("SELECT * FROM data WHERE 'FirstPacketTime' > 1570680300")
rows = cur.fetchmany(10)

1 Ответ

2 голосов
/ 31 октября 2019

Образец созданной базы данных

enter image description here

enter image description here

Ниже запрос был выполнен и былсмог получить записи

import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print (c.execute("SELECT * FROM test WHERE FirstPacketTime < 1570676280").fetchall())
print (c.execute("SELECT * FROM test WHERE FirstPacketTime = 1570676279").fetchall())
print (c.execute("SELECT * FROM test WHERE FirstPacketTime = 1570676339").fetchall())

[(1570676279, '19.116.151.212', 9876)]
[(1570676279, '19.116.151.212', 9876)]
[(1570676339, '19.116.89.20', 3139)]

Что я сделал, так это удалил одинарные кавычки.

Кроме того, изначально он не появился для меня, потому что я не фиксировал данные в базе данных.

Как только данные были переданы в базу данных, я смог получить вывод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...