2017-09-29 4 views
0

Dans le script suivant, je remplis databse SQLite avec plusieurs valeurs génériques:valeur étrange horodatage 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() 

un des champs dans DB est unix qui est égale à int(time.time()), il est donc un horodatage en cours. Cependant, quand j'ouvre la DB, je vois ceci:

enter image description here

Cette première valeur de unix plusieurs ordres moins, que cela devrait être. Est-ce que je fais quelque chose de mal? Ou c'est juste un bug?

+2

À partir de la date, il apparaît qu'il s'agit d'une ligne insérée précédemment. Notez également que votre table a 11 entrées contrairement à la boucle qui n'insère que 10 entrées (je suppose que toutes les lignes sont visibles dans la capture d'écran). –

Répondre

1

Avez-vous essayé d'exécuter ceci plusieurs fois?

Quels sont les résultats des passages répétés?

Est-ce toujours la première valeur inférieure de plusieurs ordres à toutes les autres valeurs? En regardant la sortie de votre table, il semble que le premier résultat est à partir de 2016, où tous les résultats suivants sont à partir de 2017. Est-ce possible que cela soit lié à pourquoi l'appel time.time() a retourné un nombre beaucoup plus bas que prévu ?

Est-il possible que vous n'ayez pas démarré avec une table DB vide?

+0

oui, après la suppression et la régénération de la base de données, toutes les valeurs sont correctes ... de sorte que l'erreur d'origine semble être une sorte de magie inexplicable :) – t411tocreate