2017-09-29 9 views
0

は、私はいくつかの一般的な値でSQLiteのdatabseを埋める:それは現在のタイムスタンプですので、DB内のフィールドのPythonのタイムスタンプの奇妙な値次のスクリプトで

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

一つは、int(time.time())に等しいunixです。私はDBを開いたときしかし、私はこれを参照してください。

enter image description here

unixのこの最初の値はそれがあるべきよりも、数桁小さいです。私は何か間違っているのですか?それとも単なるバグでしょうか?

+2

これは、これが先に挿入された行であると思われる日付からです。また、テーブルには10個のエントリしか挿入しないループとは異なり、11個のエントリがあります(すべての行がスクリーンショットで表示されていると仮定します)。 –

答えて

1

これを数回試しましたか?

繰り返し実行の結果はどうなりますか?

他のすべての値よりも数桁低い最初の値ですか?

テーブルの出力を見ると、最初の結果は2016からで、次のすべての結果は2017からのものです。これは、time.time()呼び出しが予想よりもはるかに低い数値を返した?

空のDBテーブルから開始していない可能性はありますか?

+0

はい、DBを削除して再生成した後、すべての値は正常です...元のエラーは説明できない魔法のようです – t411tocreate