Список размером 0 с 2 элементами после получения метки времени из sqlite3 - PullRequest
0 голосов
/ 08 апреля 2019
con = sqlite3.connect(db_path,isolation_level=None, detect_types=sqlite3.PARSE_DECLTYPES)

cur.execute('SELECT TIMESTAMPSTART,COUNT from COUNTING order by ROWID DESC limit 1;')
print(cur.fetchall())
last_d=cur.fetchall()
print(type(last_d))
print(len(last_d))
print(last_d[0])

Результат этого кода следующий:

[(datetime.datetime(2019, 4, 8, 21, 49, 5, 675964), 2)]
<type 'list'>
0
Traceback (most recent call last):
  File "avg.py", line 70, in <module>
    stream.statuses.filter(track='bitcoin')
  File "/usr/lib/python2.7/site-packages/twython/streaming/types.py", line 67, in filter
    self.streamer._request(url, 'POST', params=params)
  File "/usr/lib/python2.7/site-packages/twython/streaming/api.py", line 154, in _request
    if self.on_success(data):  # pragma: no cover
  File "avg.py", line 59, in on_success
    update_counter()
  File "avg.py", line 38, in update_counter
    print(last_d[0])
IndexError: list index out of range

Моя база данных выглядит так:

CREATE TABLE COUNTING(
ID INTEGER PRIMARY KEY AUTOINCREMENT,
COUNT INT NOT NULL,
KEYWORD TEXT NOT NULL,
TIMESTAMPSTART TIMESTAMP NOT NULL,
TYPE TEXT NOT NULL
);

Так почему он говорит, что размер списка равен 0, хотя когда я его печатаю, в нем 2 элемента? Я просто пытаюсь получить свою метку времени из базы данных

1 Ответ

1 голос
/ 08 апреля 2019

Это потому, что вы не возвращаете никаких результатов.Обратите внимание на то, что ваш код делает ниже.У вас есть:

print(cur.fetchall())
last_d=cur.fetchall()

Оператор print выбирает все строки, не оставляя ни одной строки, чтобы вы могли фактически установить переменную last_d в.Согласно здесь , Пустой список возвращается, когда нет доступных строк .Ваша функция print потребляет все строки, не оставляя ни одной фактической переменной для хранения, следовательно, почему она возвращает длину 0.Удалите оператор print и посмотрите, что произойдет.

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