Foros Python

Versión completa: Problemas JSON y BBDD
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas tardes,
Estoy desarrollando un backend para una app, la cual extrae datos de unos ficheros y los almacena en la base de datos de Google Firestore.

La estructura de datos es:

Código:
fecha: {
           registro:{
               u'horainicio': datos[2],
               u'horafin': datos[3],
               u'entidad': datos[4],
               u'direccion': datos[5],
               u'poblacion': datos[6]
               }
          registro:{
               u'horainicio': datos[2],
               u'horafin': datos[3],
               u'entidad': datos[4],
               u'direccion': datos[5],
               u'poblacion': datos[6]
               }}
El problema que tengo es que me funciona, y añade los datos a la BBDD, pero solo me crea un registro dentro de fecha, porque cada vez que intento grabar uno nuevo, en vez de "añadir" los datos a continuación, de tal manera que estuviera dentro de fecha, varios registros con su propios datos, lo sobreescribe, quedando solo el ultimo registro.

Se que es un problema a la hora de codificar el JSON; pero por mas vueltas que le doy no soy capaz de sacarlo. Si pudierais echarme una mano ...


Os pongo el codigo de la funcion completo:

Código:
datos2=json.dumps(datos)
   datos=json.loads(datos2)
   puntero = db.collection(u'datos').document(usuario.lower())
   puntero.update({
       fecha: {
           datos[0]:{
               u'horainicio': datos[2],
               u'horafin': datos[3],
               u'entidad': datos[4],
               u'direccion': datos[5],
               u'poblacion': datos[6]
               }}
   })


Muchas Gracias por vuestra ayuda
Hola, bienvenido.

No conozco cómo funciona Google Firestore, pero si cada registro tiene una clave y un valor, como en un diccionario, entonces estás usando siempre la misma clave y por ende prevalece el último valor que hayas añadido. Por ejemplo, acá:

Código:
fecha: {
           registro:{
               u'horainicio': datos[2],
               u'horafin': datos[3],
               u'entidad': datos[4],
               u'direccion': datos[5],
               u'poblacion': datos[6]
               }
          registro:{
               u'horainicio': datos[2],
               u'horafin': datos[3],
               u'entidad': datos[4],
               u'direccion': datos[5],
               u'poblacion': datos[6]
               }
}

Tenés dos registros con la misma clave ("registro"). Debería ser "registro1" y "registro2" o cualquier otro nombre en tanto en cuanto sean diferentes.

O tal vez lo más probable es que el valor de "fecha" tenga que ser una lista y no un diccionario. Así:

Código:
fecha: [
           {
               u'horainicio': datos[2],
               u'horafin': datos[3],
               u'entidad': datos[4],
               u'direccion': datos[5],
               u'poblacion': datos[6]
               },
          {
               u'horainicio': datos[2],
               u'horafin': datos[3],
               u'entidad': datos[4],
               u'direccion': datos[5],
               u'poblacion': datos[6]
         }
]

Nótense los corchetes en vez de llaves.

Saludos