Tengo una biblioteca de gráficos que requiere mis datos en la marca de tiempo epoch/Unix timestamp.
Así que lo convierto así:
ydm = 20170101 ymd = ms['dimensions'][0] + '-' + '235959' d = datetime.datetime.strptime(ymd,'%Y%m%d-%H%M%S') date = d.strftime('%Y-%m-%d') ts = int(d.strftime("%s")) * 1000
Esto funciona bien y, como resultado, obtengo un campo legible por humanos 2017-04-08
y sello de tiempo 1491695999000
Estoy tratando de guardar ambos campos en mi base de datos, primero probé con un IntegerField
, pero recibí el error anterior, pensé que se debía a que la marca de tiempo era un número tan grande, así que también probé un BigIntegerField
pero sigo obteniendo el error con un número aleatorio (?) Cercano a: invalid literal for int() with base 10: '100.0'
El número siempre tiene un punto y supongo que es por eso que Django correctamente no lo acepta.
Mi vista se parece a esto:
print('time stamp is: '+str(ts)) # This is an int and the result is something like this: `time stamp is: 1491868799000` # Save Metrics to DB gp = GoogleProperty.objects.get(google_email=current_user) user_id = int(gp.user_id) property_id = gp.property_id property_name = gp.property_name obj, created = GaCountries.objects.get_or_create(property_id=property_id, date=date, country=country, defaults={ 'owner':user_id, 'property_id':property_id, 'date':date, 'property_name':property_name, # Remove Later 'country':country, 'sessions' : sessions, 'users' : users, 'pageviews' : pageviews, 'bouncerate': bouncerate, 'timestamp' : ts, }) if not created: # If exists which data should be replaced: obj.date = date ---ETC
El problema ocurre en la línea: 'timestamp' : ts,
pero estoy seguro de que ts es un número entero y los datos son correctos.
El modelo ahora es:
timestamp = models.BigIntegerField(blank=True, null=True)
Pero probé también con otro tipo de campos...
¿Algunas ideas?