簡體   English   中英

從sqlite3檢索時間戳后,大小為2的元素的大小為0的列表

[英]List of size 0 with 2 element after retrieving timestamp from sqlite3

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
);

那么,為什么當我打印列表時它有2個元素,它卻說列表的大小還是0? 我只是想從數據庫中檢索我的時間戳

那是因為您沒有返回任何結果。 請注意以下代碼的作用。 你有:

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

print語句獲取所有行,不留任何行供您實際將last_d變量設置為。 按照這里的規定如果沒有行可用,則返回一個空列表 您的print函數將消耗所有行,不保留任何行供實際變量存儲,因此為什么返回長度為0 刪除print語句,看看會發生什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM