2017-09-29 96 views
0

在下面的脚本,我填的SQLite DATABSE几个通用值:蟒蛇时间戳奇怪价值

import sqlite3 
import time 
import datetime 
import random 

conn = sqlite3.connect('tutorial.db') 
curs = conn.cursor() 

def dynamic_data_entry(): 

    unix = int(time.time()) 
    date = str(datetime.datetime.fromtimestamp(unix).strftime('%Y-%m-%d %H:%M:%S')) 
    keyword = 'Python' 
    value = random.randrange(0, 10) 

    curs.execute("INSERT INTO stuffToPlot (unix, datestamp, keyword, value) VALUES (?, ?, ?, ?)", (unix, date, keyword, value)) 

    conn.commit() 

for i in range(10): 
    dynamic_data_entry() 
    time.sleep(1) 

curs.close 
conn.close() 

在DB的一个领域是unix等于int(time.time()),所以这是一个当前时间戳。然而,当我打开DB,我看到:

enter image description here

unix这首先看重的是几个数量少,比它应该是。难道我做错了什么?或者它只是一个错误?

+2

从该日期看来,这是先前插入的行。还要注意,你的表有11个条目,而不像循环插入只有10个条目(我假设所有的行在屏幕截图中都是可见的)。 –

回答

1

您是否尝试过运行这几次?

重复运行的结果是什么?

它总是第一个值比其他所有值都低几个值吗?

看看您的表格输出,看起来第一个结果是从2016年开始的,所有后续结果都是从2017年开始的。是否有可能这与time.time()调用返回的预期数量少得多有关?

您是否有可能没有以空数据库表开始?

+0

是的,在删除并重新生成数据库之后,所有的值都是正确的......这样原来的错误似乎是某种无法解释的魔力:) – t411tocreate